3

powerpc ボード (ap) で snmpd デーモンを実行しているときに、次のエラーが発生します。

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

-fPICグーグルで調べたところ、コンパイル中にフラグが存在し、その場所がgccの直後にあることがわかったので、それに応じてMakefieを変更しました。これが私のmakefileのスニペットです:

$(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" \`    

ご覧のとおり-fPIC、gcc の直後に埋め込みましたが、まだエラーが発生しています。私は powerpc プラットフォーム用にクロス コンパイルしており、最新の buildroot-2011.11 と gcc 4.3.6 と uClibc バージョン 0.9.32 を使用しています。エラーの原因は何ですか?

PS私がそうすると nm libnetsnmpmibs.so.15 | grep strlen、私は出力を得るU strlen. これは未定義ということですか?

4

1 に答える 1

1

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

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

于 2012-01-04T06:59:00.633 に答える