2011-12-09 17 views
2

でライブラリを共有:エラーコンパイルが、私はこのエラーを取得しています-fPIC

R_PPC_REL24: Compile shared libraries with -fPIC! 
/usr/local/sbin/snmpd: symbol 'strlen': can't handle reloc type 0xa in lib 
/lib/libnetsnmpmibs.so.15' 
sh: you need to specify whom to kill 

私はGoogleで検索してコンパイルし、その場所ながら-fPICフラグがあるべきことを発見しましたgccの直後でなければならないので、私はそれに応じてMakefieを変更しました。あなたがgccの後、私が埋め込ま-fPIC右を見ることができるように

$(Q)cd $(PROJECT_BUILD_DIR)/$(NET_SNMP_PKG) && ./configure --target=$(TARGET_TRIPLET) \ 
     --host=$(HOST_TRIPLET) \ 
     --build=$(BUILD_TRIPLET) \ 
     --with-cc="$(CR_COMPLR)gcc -fPIC" \` 
     --with-cflags="-Os -I$(RFS)/lib -I$(NMS_DIR)/include" \` 
     --with-linkcc="$(CR_COMPLR)gcc -fPIC" \`  

が、私はまだエラーを取得しています:ここに私のメイクファイルの抜粋です。私はpowerpcプラットフォーム向けにクロスコンパイルしており、最新のbuildroot-2011.11とgcc 4.3.6とuClibcバージョン0.9.32を使用しています。エラーの原因は何ですか?

P.S.私がnm libnetsnmpmibs.so.15 | grep strlenを実行すると、出力はU strlenとなります。これは定義されていないことを意味しますか?

答えて

0

問題が発生しました。実際には、主なものは-fPICのみでコンパイルすることです。

私の場合、ライブラリを-fPICで正しくコンパイルしていましたが、一部の機能は他のパッケージ(nms)のライブラリに依存していました。私はファームウェア開発に取り組んでいるので、20以上のパッケージが含まれています。だから私は-fPICnmsライブラリをコンパイルし、エラーが解決されました。

関連する問題