3

私は組み込み環境で働いています。ARMアーキテクチャ用のクロスコンパイラをeglibcプライマリライブラリとして使用しています(つまり、デフォルトlibcはツールチェーンに付属しています)。ここで、いくつかのアプリケーションをにリンクさせたいと思いますuClibc。そこでuClibc、そのツールチェーンを使用してコンパイルしました。アプリケーションをコンパイルしてリンクしようとしているuClibcときに、エラーが発生しました。ツールチェーンのデフォルトライブラリにリンクされています。同じマシン上に2つの異なるlibc(libc、uClibcなど)を置くことは可能だと思います。

ネットで検索して、以下が付属しました

  1. 1つのホスト上の複数のglibcライブラリ

    それが示唆したように、私は次のことをしました

    $arm-unknown-linux-gnueabi-gcc -c test.c -o TEST
    
    $arm-linux-gnueabi-gcc TEST -o dynamic_test_with_new_opts -Wl,rpath=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib -Wl,-dynamic-linker=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib/ld-uClibc.so.0 
    

    この場合、デフォルトlibc.so.6eglibc

  2. 別のlibcファイルにリンクする方法は?

    上記のリンクが示唆しているように、私は次のことも試しました:

    $arm-unknown-linux-gnueabi-gcc -Xlinker -rpath=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib -Xlinker -I/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib/ld-uClibc-0.9.32.1.so test.c -o  dynamic_test_with_linker_options 
    

    この場合も、デフォルトlibc.so.6eglibc

どこが間違っているのですか?私は本当にこれで立ち往生しています。誰かが光を当ててくれませんか?

4

1 に答える 1

2

そのためにはコンパイラを再構築する必要があると思います。uClibc を使用するには、コンパイラを別の方法で構成する必要があります。

于 2012-03-19T14:09:08.457 に答える