1

autotools 機能を組み込んだ C++ ソース コード プロジェクトをインターネットからダウンロードしました。そのため、コンパイラを持っているアーム デバイス用にクロスコンパイルしたいと考えています。ただし、autotools パラメーターでアーム コンパイラを指定する方法がわかりません。configure オプションで CC=pathOfArmCompiler を使用してコンパイラへのパスを設定しようとしましたが、機能しません。

それをどのように行うかについて何か提案はありますか?configure.ac アーカイブの変更について読んでいましたが、それがより良い解決策であるかどうかはわかりません。

前もって感謝します、

よろしく

編集:

次の構成を使用して、ジャックケリーのアドバイスを試しました

configure CC=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-gcc CXX=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-g++  CFLAGS="-m32" LDFLAGS="-m32"--host=arm-mv5sft-linux-gnueabi --with-sysroot=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/arm-mv5sft-linux-gnueabi/

このエラーが発生します

Command-line environment variables:
     LDFLAGS="-m32" LDFLAGS="-m32" CC="/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-gcc" CXX="/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-g++"

sh -c /home/t/ibrdtn/ibrdtn-tools-0.8.0/configure      ++ --host=arm-mv5sft-linux-gnueabi --with-sysroot=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/arm-mv5sft-linux-gnueabi/ 
configure: WARNING: you should use --build, --host, --target
configure: WARNING: invalid host type: ++
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-mv5sft-linux-gnueabi-strip... no
checking for arm-mv5sft-linux-gnueabi-strip... no
checking for strip... strip
configure: WARNING: using cross tools not prefixed with host triplet
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
Invalid configuration `++': machine `++' not recognized
configure: error: /bin/bash ./config.sub ++ failed
configure: error: /bin/bash ./config.sub ++ failed
checking build system type... 

Configuration failed with error

EDIT 2:Eclipseを再インストールした後、以前のエラーはなくなりました。しかし、今この構成で

./configure --build=i686-linux --host=arm-mv5sft-linux-gnueabi
--target=arm-mv5sft-linux-gnueabi
CC=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-gcc
CXX=/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/bin/arm-mv5sft-linux-gnueabi-g++
--with-gnu-ld--with-sysroot=/h/t/s/arm-mv5sft-linux-gnueabi/SW3.2p1/arm-mv5sft-linux-gnueabi
CFLAGS="-m32" LDFLAGS="-m32" --prefix=/ibrdtn-svn/dtnCross/

構成出力を確認すると、これが得られました

checking for arm-mv5sft-linux-gnueabi-g++... no
checking for arm-mv5sft-linux-gnueabi-c++... no
checking for arm-mv5sft-linux-gnueabi-gpp... no
checking for arm-mv5sft-linux-gnueabi-aCC... no
checking for arm-mv5sft-linux-gnueabi-CC... no
checking for arm-mv5sft-linux-gnueabi-cxx... no
checking for arm-mv5sft-linux-gnueabi-cc++... no
checking for arm-mv5sft-linux-gnueabi-cl.exe... no
checking for arm-mv5sft-linux-gnueabi-FCC... no
checking for arm-mv5sft-linux-gnueabi-KCC... no
checking for arm-mv5sft-linux-gnueabi-RCC... no
checking for arm-mv5sft-linux-gnueabi-xlC_r... no
checking for arm-mv5sft-linux-gnueabi-xlC... no

...

make[3]: Entering directory `/home/t/ibrdtn/ibrcommon-0.8.0/ibrcommon/net'
  CXX    tcpclient.lo
  CXX    tcpserver.lo
  CXX    tcpstream.lo
  CXX    udpsocket.lo
  CXX    MulticastSocket.lo
  CXX    UnicastSocket.lo
  CXX    stopandwait.lo
  CXX    vsocket.lo
  CXX    vinterface.lo
  CXX    vaddress.lo
  CXX    LinkManager.lo
In file included from LinkManager.cpp:16:
../../ibrcommon/net/NetLinkManager.h:19:29: error: netlink/netlink.h: No such file or directory
../../ibrcommon/net/NetLinkManager.h:20:26: error: netlink/attr.h: No such file or directory
make[3]: *** [LinkManager.lo] Error 1
make[3]: Leaving directory `/home/t/ibrdtn/ibrcommon-0.8.0/ibrcommon/net'
make[2]: Leaving directory `/home/t/ibrdtn/ibrcommon-0.8.0/ibrcommon'
make[2]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/t/ibrdtn/ibrcommon-0.8.0/ibrcommon'
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1

**** Build Finished ****

コンパイラが適切に咳をしていないと思いますが、考えられる理由を知っていますか?

前もって感謝します、

4

1 に答える 1

2

自動ツール化されたパッケージをクロスコンパイルする場合、考慮すべき 3 つのオプションがありますconfigure: --host--buildおよび--target.

  • --host: バイナリはどのプラットフォームで実行されますか?
  • --build: コンパイルを行っているプラ​​ットフォームは?
  • --target: コンパイラをビルドする場合、どのプラットフォームをターゲットにする必要がありますか?

(はい、これは、sparc マシンを使用して、x86 で動作するが ARM をターゲットとするコンパイラをコンパイルできることを意味します。これはカナディアン クロスと呼ばれます。)

これらのオプションへの引数は (一般的な) 形式を取りますが、ARCH-VENDOR-OS-LIBC1 つまたは複数の部分が省略される場合があります。いくつかの例:

  • i686-pc-linux-gnu
  • i586-pc-mingw32
  • arm-mv5sft-linux-gnueabi

これらは、呼び出されるツール(コンパイラ、リンカー、スクリプト内で検出されるもの)のarプレフィックスとして使用されます。AC_CHECK_TOOLconfigure

に対する引数--hostは ですがarm-mv5sft-linux-gnueabi、 はどう--buildでしょうか?

まあ、configureそれは( という補助スクリプトを呼び出すことによってconfig.guess)推測できることが多いので、次のことを試してみてください。

./configure \
   --host=arm-mv5sft-linux-gnueabi \
    PATH="/home/t/s/arm-mv5sft-linux-gnueabi/SW3.2pi/bin:$PATH"
于 2013-02-01T20:17:49.663 に答える