2013-06-24 3 views
2

Я столкнулся с проблемой при попытке связать мой проект:CrossCompile OpenSSL с флагом компилятора ППИЦ не работает (e_os.h не найден)

arm-linux-gnueabihf/bin/ld: ~/libcrypto_t.a(mem_dbg.o): relocation R_ARM_THM_MOVW_ABS_NC against 'a local symbol' an not be used when making a shared object; recompile with -fPIC 
libcrypto_t.a: could not read symbols: Bad value 

Так что я думаю, я не строить OpenSSL как общий объект. Я устал, чтобы сделать это

export cross=arm-linux-gnueabihf- 
    cd openssl-1.0.1e 
    ./Configure dist --prefix=$HOME/opensslArm 
    make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib" CFLAGS="-fPIC" CXXFLAGS="-fPIC" 

Но я бегу в ошибку сразу же (если оставить в стороне CFLAGS и CXXFLAGS компилирует просто отлично):

making all in crypto... 
make[1]: Entering directory `/home/dev/openssl-1.0.1e/crypto' 
(echo "#ifndef MK1MF_BUILD"; \ 
    echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */'; \ 
    echo ' #define CFLAGS "/home/linuxonarm/armv7_devel/dl/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf-gcc -O"'; \ 
    echo ' #define PLATFORM "dist"'; \ 
    echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \ 
    echo '#endif') >buildinf.h 
/home/linuxonarm/armv7_devel/dl/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf-gcc -fPIC -c -o cryptlib.o cryptlib.c 
In file included from cryptlib.c:117:0: 
cryptlib.h:65:18: fatal error: e_os.h: No such file or directory 
compilation terminated. 
make[1]: *** [cryptlib.o] Error 1 
make[1]: Leaving directory `/home/dev/openssl-1.0.1e/crypto' 
make: *** [build_crypto] Error 1 

ответ

1

Вы можете использовать эту команду, чтобы добавить -fPIC CFLAG в Makefile

./Configure dist -fPIC 

, а затем просто позвонить

make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib" 

для компиляции с опцией компилятора -fPIC

+0

Я получаю следующее с первой командой: configure: error: unrecognized option: '-fPIC ' –