cmake报错信息如下:
[100%] Linking CXX executable ../../bin/rtsp_test1
../../../lib/openssl_arm/lib/libcrypto.a(threads_pthread.o): In function `fork_once_func':
threads_pthread.c:(.text+0x18): undefined reference to `pthread_atfork'
collect2: error: ld returned 1 exit status
原CMakeLists.txt文件截取:
target_link_libraries(${LIB_NAME}
pthread m dl rt
${PROJECT_SOURCE_DIR}/lib/live555_arm/libliveMedia.a
${PROJECT_SOURCE_DIR}/lib/live555_arm/libBasicUsageEnvironment.a
${PROJECT_SOURCE_DIR}/lib/live555_arm/libgroupsock.a
${PROJECT_SOURCE_DIR}/lib/live555_arm/libUsageEnvironment.a
${PROJECT_SOURCE_DIR}/lib/openssl_arm/lib/libssl.a
${PROJECT_SOURCE_DIR}/lib/openssl_arm/lib/libcrypto.a
)
调整后CMakeLists.txt文件截取:
target_link_libraries(${LIB_NAME}
${PROJECT_SOURCE_DIR}/lib/live555_arm/libliveMedia.a
${PROJECT_SOURCE_DIR}/lib/live555_arm/libBasicUsageEnvironment.a
${PROJECT_SOURCE_DIR}/lib/live555_arm/libgroupsock.a
${PROJECT_SOURCE_DIR}/lib/live555_arm/libUsageEnvironment.a
${PROJECT_SOURCE_DIR}/lib/openssl_arm/lib/libssl.a
${PROJECT_SOURCE_DIR}/lib/openssl_arm/lib/libcrypto.a
pthread m dl rt
)
原因:跟各个库的依赖顺序有关。需要把被依赖的库放在依赖的库后面。