./configure를 실행하는 동안 ccshared = -fpic을 어떻게 설정할 수 있습니까?
문제
Python 2.6을 구축하려고합니다 qgis ~에 RHEL 5. QGI를 만드는 동안 다음과 같은 오류가 발생합니다.
Linking CXX shared library libqgispython.so
/usr/bin/ld: /usr/local/lib/python2.6/config/libpython2.6.a(abstract.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/python2.6/config/libpython2.6.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [src/python/libqgispython.so.1.0] Error 1
make[1]: *** [src/python/CMakeFiles/qgispython.dir/all] Error 2
make: *** [all] Error 2
이 오류에서 알아 낸 것은 깃발로 Python 2.6을 만들어야한다는 것입니다. -fPIC
. 좋아, 그래서 나는 그것을 발견했다 configure.in
파일이지만 몇 가지 조건을 확인하고 할당하는 조건에 따라 -fPIC
~로 CCSHARED
깃발.
내가 한 일은 모든 조건을 확인한 후 고의적으로 사용할 다음 줄을 추가했다는 것입니다. CCSHARED
~처럼 -fPIC
.
CCSHARED="-fPIC";
하지만 작동하지 않았습니다 ..
설정하려는 구성을 지정하는 방법 CCSHARED
~처럼 -fPIC
?
해결책
실행 구성을 실행하십시오 --enable-shared
. 그 다음에 -fPIC
공유 깃발의 일부로 포함됩니다.
다른 팁
이 오류에 부딪쳤을 때 다음은 저를 위해 일했습니다.
make clean
./configure CFLAGS=-fPIC CXXFLAGS=-fPIC
추가하여 작동했습니다 -fPIC
~ 후에 CC= gcc -pthread
, 즉 CC= gcc -pthread -fPIC
makefile에서.
- 운영
./configure --help
, 아마도 grep pic에 배관하여 이것을 활성화 할 수있는 옵션이 있는지 확인할 수 있습니다. - 구성을 실행하기 전에 환경 변수를 설정해보십시오 (예 : ccshared =”-fpic”./configure (bash를 가정하면 단일 명령으로)
그 중 어느 것도 작동하지 않으면 구성 코드를 읽고 테스트 조건을 더 잘 이해해야합니다.
다른 곳에서 언급 한 바와 같이 -enable -shared로 구성을 실행하면 -fpic가 컴파일러 플래그에 포함되어야합니다. 그러나 'make -j8'을 사용하여 병렬 빌드를 시도하는 경우 여전히 "기호를 읽을 수 없음"오류가 표시 될 수 있습니다. 나는 Rhel 5.2에서 동일한 오류가 있었고 내 호출에서 '-j8'을 제거했을 때만 사라졌습니다 ...
그렇지 않습니다 CCFLAGS
? (한동안 세상의 측면이 아니 었습니다.)
./config ---prefix =/Software/Bea/OpenSSL/100C -OpenSSLDIR =/Software/BEA/OpenSSL/100C/SSL Shared -FPIC로 OpenSSL을 재건축
그런 다음도 잘 작동합니다. /usr/bin/ld를 제공했습니다 : 링크가 실패했습니다. 우리는 이전에 링크 파일을 수정했다. .o hexutils.o des3crypt.o blowcrypt.o /software/bea/openssl/1.0.0c/lib/libcrypto.a
우리는 Libcrypto.a를 Libcrypto로 변경했습니다. 공유 옵션 및 -FPIC로 재건 한 후
gcc -wall -o pwutil.so asciihex.o base64.o bitutils.o dict.o gen_rand.o key_schedule.o md5c.o pdg2_ecb.o pwutils.o random_data.o hexutils.o des3crypt.o blowcrypt.o / 소프트웨어/bea/openssl/1.0.0c/lib/libcrypto.so
그리고 그것은 효과가있었습니다
다음에는 an이 있습니다 예시 fpic을 전달하여 구성합니다