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
. これは未定義ということですか?