2017-05-03 24 views
1

私はautoconfでクロスコンパイルしようとしていました。autoconfでクロスコンパイル

  1. https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Hosts-and-Cross_002dCompilation.html

  2. https://www.gnu.org/software/autoconf/manual/autoconf-2.65/html_node/Specifying-Target-Triplets.html

  3. https://github.com/jedisct1/libsodium/issues/274
  4. Cross Compiling For ARM With Autoconf

とやった -

: 私はこれらからしようとしたのに役立ちます
./configure --build=x86_64-linux-gnu --host=/opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf --target=/opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf --disable-shared --disable-documentation 

しかし、gccやその他のコンパイルに必要なものをautoconfツールでチェックしても、これらは見つかりません。それらはすでにディレクトリに存在していますが。

だからログは次のとおりです。

checking for a BSD-compatible install... /usr/bin/install -c 
checking whether build environment is sane... yes 
checking for /opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-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 
checking whether make supports nested variables... yes 
checking for /opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc... no 
checking for gcc... gcc 
checking whether the C compiler works... yes 
checking for C compiler default output file name... a.out 
checking for suffix of executables... 
checking whether we are cross compiling... yes 
checking for suffix of object files... o 
checking whether we are using the GNU C compiler... yes 
checking whether gcc accepts -g... yes 
checking for gcc option to accept ISO C89... none needed 
checking whether gcc understands -c and -o together... yes 
checking for style of include used by make... GNU 
checking dependency style of gcc... gcc3 
checking for /opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar... no 
checking for /opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-lib... no 
checking for /opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-link... no 
checking for ar... ar 
checking the archiver (ar) interface... ar 
checking build system type... x86_64-pc-linux-gnu 
checking host system type... Invalid configuration `/opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf': machine `/opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm' not recognized 
configure: error: /bin/bash ./config.sub /opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf failed 

これは、すべてのARMツールチェーンビン

[email protected]:/opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin$ ls 
arm-linux-gnueabihf-addr2line arm-linux-gnueabihf-gcc   arm-linux-gnueabihf-gfortran arm-linux-gnueabihf-readelf 
arm-linux-gnueabihf-ar   arm-linux-gnueabihf-gcc-5.4.1 arm-linux-gnueabihf-gprof  arm-linux-gnueabihf-size 
arm-linux-gnueabihf-as   arm-linux-gnueabihf-gcc-ar  arm-linux-gnueabihf-ld  arm-linux-gnueabihf-strings 
arm-linux-gnueabihf-c++  arm-linux-gnueabihf-gcc-nm  arm-linux-gnueabihf-ld.bfd arm-linux-gnueabihf-strip 
arm-linux-gnueabihf-c++filt arm-linux-gnueabihf-gcc-ranlib arm-linux-gnueabihf-nm  gdbserver 
arm-linux-gnueabihf-cpp  arm-linux-gnueabihf-gcov  arm-linux-gnueabihf-objcopy runtest 
arm-linux-gnueabihf-elfedit arm-linux-gnueabihf-gcov-tool arm-linux-gnueabihf-objdump 
arm-linux-gnueabihf-g++  arm-linux-gnueabihf-gdb   arm-linux-gnueabihf-ranlib 

任意の提案のためのディレクトリですか?

EDIT 私はChronoが提案したソリューションを試しました。それは腕のツールチェーンを見つけることができました。しかし、別の問題がarised:シンボル追加

エラー:ファイル形式は、コンパイルのこの行のエラーのために

libtool: link: arm-linux-gnueabihf-gcc -shared -fPIC -DPIC src/.libs/libcoap_1_la-address.o src/.libs/libcoap_1_la-async.o src/.libs/libcoap_1_la-block.o src/.libs/libcoap_1_la-coap_dtls.o src/.libs/libcoap_1_la-coap_event.o src/.libs/libcoap_1_la-coap_keystore.o src/.libs/libcoap_1_la-coap_time.o src/.libs/libcoap_1_la-debug.o src/.libs/libcoap_1_la-encode.o src/.libs/libcoap_1_la-hashkey.o src/.libs/libcoap_1_la-mem.o src/.libs/libcoap_1_la-net.o src/.libs/libcoap_1_la-option.o src/.libs/libcoap_1_la-pdu.o src/.libs/libcoap_1_la-resource.o src/.libs/libcoap_1_la-str.o src/.libs/libcoap_1_la-subscribe.o src/.libs/libcoap_1_la-uri.o src/platform/posix/.libs/libcoap_1_la-coap_io.o src/platform/posix/.libs/libcoap_1_la-prng.o src/platform/posix/.libs/libcoap_1_la-run.o -L./ext/tinydtls -ltinydtls -g -O2 -Wl,--version-script=./libcoap-1.map -Wl,-soname -Wl,libcoap-1.so.0 -o .libs/libcoap-1.so.0.0.0 

を認識していないが、次のとおりです。

./ext/tinydtls/libtinydtls.a: error adding symbols: File format not recognized 

EDIT 2:

問題は、クロスコンパイラparamsをautoconfに適切に渡すことがないライブラリであり、したがって問題です。

答えて

1

あなたのツールチェーンのバイナリファイルを含むディレクトリを確認しますが、あなたの$PATHである:

export OLDPATH=$PATH 
export PATH=$OLDPATH:/opt/toolchains/gcc-linaro-5.4.1-2017.01-x86_64_arm-linux-gnueabihf/bin 

ログアウトするか、そうでない場合はその端末セッションを終了しない限り、あなたは、一度それを行うためにだけ必要があるはずです。それが行わ付き

、あなたが適切に設定することができます。

./configure \ 
    --build=x86_64-linux-gnu \ 
    --host=arm-linux-gnueabihf \ 
    --target=arm-linux-gnueabihf \ 
    --disable-shared \ 
    --disable-documentation 
+0

をクロスコンパイルツールチェーンを見つけることができたが、別のエラーが来た:エラーがシンボルを追加:認識されないファイル形式を。 –

+1

の編集をご覧ください。私がコンパイルしているライブラリには別のライブラリがあります。親ライブラリのautoconfを通して、子ライブラリのautoconfもやっています。しかし、その場合、オートクロスからアームクロスを取っていません。 gccではなくccでコンパイルしています。 –

+1

@ ninja.stopこれは、別の質問が必要になるので、別の質問ではもっとうまくいくでしょう(コンパイルしているライブラリの既知の問題かもしれませんが)[このメーリングリストのスレッド](https:// dev .eclipse.org/mhonarc/lists/tinydtls-dev/msg00061。html)は良いスタートかもしれません。 –