16

autconfを使用してアームボードのライブラリをクロスコンパイルするのに問題があります。

私はこの行を使用しています:

./configure --target=arm-linux --host=arm-linux --prefix=/bla/bla/bla/linux_arm_tool CFLAGS='-m32'
make
make install

file私がそれをチェックするために行うとき、私は得ます:

libjpeg.so.8.4.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

それはまったく正しくないようですが、とにかくそれを使ってみました...そして私は次のようになります:

/usr/lib/gcc/arm-linux-gnueabi/4.5.3/../../../../arm-linux-gnueabi/bin/ld: skipping incompatible /bla/bla/bla/bla/../linux_arm_tool/lib/libjpeg.so when searching for -ljpeg

私は途方に暮れています、私は今1時間グーグルしています...

4

4 に答える 4

17

だから私は本当に基本的なメソッド呼び出しを使用する前にクロスコンパイルしたことを知っていて、出力を調べた後、なぜこれをやめたのかを理解しました:

checking for arm-linux-gnueabi-gcc... no
checking for gcc... gcc
...
...
checking for arm-linux-gnueabi-gcc... gcc

/usr/binにはありませんでしたarm-linux-gnueabi-gcc、私はしなければなりませんでした:

ln -s /usr/bin/arm-linux-gnueabi-gcc-4.5 /usr/bin/arm-linux-gnueabi-gcc

私は以下を使用して正常にクロスコンパイルしました:

./configure --host=arm-linux-gnueabi -prefix=${CSTOOL_DIR}/linux_arm_tool

リンクに関しては...私はまだいくつかのことをチェックする必要がありますが-rpath-link、より高度なコンパイルでいくつかのフラグをスローする必要があるかもしれないと仮定します。

于 2013-03-05T22:56:08.597 に答える
10

この問題は、より一般的に次のように言い換えることができると思います。「Autoconfを使用してARMのクロスコンパイルを行うにはどうすればよいですか?」

によると./configure -h

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

公式のGNUドキュメントは、この質問に答えるのに役立ちます。

http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Hosts-and-Cross_002dCompilation.html

--hostandと--build:の使用法を定義するときに注意してください。

Therefore, whenever you specify --host, be sure to specify --build too.

そして、これはiperf私が組み込みARMプラットフォーム用に構成するために使用した例です。

まず第一に、「。/ configure」スクリプトは実際には「Autoconf」と呼ばれ、グーグルで本当に役立ちます。ここでの考え方は次のとおりです。

  • 現在の$PATHにクロスコンパイラを入れてください
  • クロスコンパイラを指すようにCCおよびCXX環境変数を設定します
  • 適切な--hostと--buildを指定します

    buildpath    <--- my little script to setup my $PATH
    export CC=arm_v5t_le-gcc
    export CXX=arm_v5t_le-g++
    ./configure --host=armv5tl-montavista-linux-gnueabi --build=x86_64-linux-gnu
    
于 2014-01-16T23:17:44.517 に答える
2

環境変数CC、LD、およびその他の関連する変数をオーバーライドする必要があります。これらのスイッチを設定しても、クロスツールチェーンがどこにあるかはわかりません(どこにでもある可能性があります)

さまざまなプロジェクトのガイドを確認してください。たとえば、http: //wiki.wxwidgets.org/Cross-Compiling_Under_Linux

また、node.jsのクロスコンパイルをセットアップするために作成したスクリプトもあります-同じアイデア: https ://gist.github.com/edhemphill/5094239

libjpegはx86バイナリであるため、機能しません。次のように言う必要があります。

 ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, not stripped

または類似。

これはあなたが得ている理由ですskipping incompatible

于 2013-03-05T22:05:36.480 に答える
0

# Install arm-linux-gnueabi packages
apt-get install libc6-armel-cross libc6-dev-armel-cross \
binutils-arm-linux-gnueabi arm-linux-gnueabi-gcc libncurses5-dev

./configure --target=arm-linux-gnueabi --host=arm-linux-gnueabi
...
checking for arm-linux-gnueabi-gcc... arm-linux-gnueabi-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 arm-linux-gnueabi-gcc accepts -g... yes
checking for arm-linux-gnueabi-gcc option to accept ISO C89... none needed
checking whether arm-linux-gnueabi-gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of arm-linux-gnueabi-gcc... gcc3
...

make
arm-linux-gnueabi-gcc -DPACKAGE_NAME=\"Tutorial\ Program\" -DPACKAGE_TARNAME=\"tutorial-program\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"Tutorial\ Program\ 1.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"tutorial-program\" -DVERSION=\"1.0\" -I.     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c

于 2018-10-11T02:17:22.427 に答える