./configure를 실행하는 동안 ccshared = -fpic을 어떻게 설정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/629961

  •  08-07-2019
  •  | 
  •  

문제

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에서.

  1. 운영 ./configure --help, 아마도 grep pic에 배관하여 이것을 활성화 할 수있는 옵션이 있는지 확인할 수 있습니다.
  2. 구성을 실행하기 전에 환경 변수를 설정해보십시오 (예 : 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을 전달하여 구성합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top