-fPIC
부족으로 errors in our CMake makefiles을 포착합니다. 그녀는 ci20 MIPS dev에 보드에서 하나 :CMakeList.txt에서 32 비트 x86 프로세서를 감지합니까?
...
[ 92%] Built target cryptopp-object
Scanning dependencies of target cryptopp-shared
Scanning dependencies of target cryptopp-static
Linking CXX static library libcryptopp.a
Linking CXX shared library libcryptopp.so
/usr/bin/ld: CMakeFiles/cryptopp-object.dir/cryptlib.cpp.o: relocation R_MIPS_HI16 against
`a local symbol' can not be used when making a shared object; recompile with -fPIC
CMakeFiles/cryptopp-object.dir/cryptlib.cpp.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
프로젝트의 정책이 압력을 등록하기 때문에 32 비트 x86을 제외한 모든 곳에서 우리 PIC이다. 즉 x86_64, ARM-32, Aarch32, Aarch64, MIPS, MIPS64, UltraSparc 등은 PIC를 얻습니다.
대상 프로세서가 CMAKE_SYSTEM_PROCESSOR
으로 제공됩니다. 내가 겪고있는 문제는 문서에서 값을 말하지 않기 때문에 "32 비트가 아닌 x86"테스트를 작성하는 방법을 알 수 없습니다.
CMakeList.txt에서 32 비트 x86 프로세서를 어떻게 검색합니까?
CMake가 CMAKE_SYSTEM_PROCESSOR
을 설정하는 포괄적 인 프로세서 목록을보고 싶습니다. 누구든지 목록을 가지고 있다면, 그것을 제공하는 것이 좋을 것입니다.
다시 한 번 감사드립니다. 나는'CMAKE_POSITION_INDEPENDENT_CODE'에 대해 몰랐다. 내가 추가 할게. – jww
* "모든 리틀 엔디안 프로세서를 인텔 기반으로 사용하십시오."* - 다소 느슨해 질 필요가 있습니다. 내가 사용하는 모든 ARM 프로세서는 LE입니다. 코너 케이스는 예전 Apple G5의 PowerPC라고 할 수 있습니다. 그것의 BE, 그리고 그것을 필요로 -fPIC (IIRC). 나는 라이브러리의 BE 빌드를 테스트하기 위해 지하실에있는 G5 중 하나를 가지고 있습니다. Verizon이 라우터에서 포트 포워딩을 수정하면 (https://www.google.com/search?q=verizon+prt+forwarding+broke) 원하는 경우 원격 SSH 액세스를 제공 할 수 있습니다. PF는 작동하지만, VZ는 4XX 시리즈 펌웨어 업데이트에서 파기했습니다. 당신은 모두 당신이 좋아하는 CMake를 테스트 할 수 있습니다 :) – jww
@jww 그래, 나는 더 잘 알려야했다. 그 죄송합니다. 훨씬 더 정확한 "미리 정의 된 x86 매크로 검사"버전을 추가했습니다. 그렇게해야합니다. – Florian