Когда я запускаю демон snmpd на плате powerpc (a.p.), Я получаю эту ошибку:
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. Вот фрагмент моего make-файла:
$(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. В чем может быть причина ошибки?
P.S. Когда я делаю nm libnetsnmpmibs.so.15 | grep strlen
, тогда я получаю вывод как U strlen
. Значит ли это, что оно не определено?