maxOS上的交叉编译无法链接系统库(CMake),但其他库成功

时间:2017-06-23 06:05:49

标签: c macos gcc cmake cross-compiling

tl; dr - 当其他库工作时,CMake在链接器未找到具有预编译的RaspberryPi工具链的System库时失败

所以我已经和它斗争了几天,在没有帮助的情况下在RaspberryPi SO上问道,我相信我已经接近通过CMake编译的RaspberryPi获取ARM可执行文件的旅程了。在macOS Sierra。

目前,我使用this blog中预编译的RaspberryPi工具链,并获得以下结果:

macbook:gpsexample alex$ cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /Volumes/linuxdev/gpsexample
macbook:gpsexample alex$ make
[ 20%] Linking C executable gpsexample
clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
ld: library not found for -lSystem
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [gpsexample] Error 1
make[1]: *** [CMakeFiles/gpsexample.dir/all] Error 2
make: *** [all] Error 2

我以前在将m库与相同错误链接时出现问题,但是添加了正确的系统根修复了该问题。我有一种感觉,我错过了另一个图书馆或目录 - 但我不太确定在哪里。

以下是我的CMakeLists.txt(仅限单个文件):

cmake_minimum_required(VERSION 3.6.2)
project (gpsexample)

set(CMAKE_SYSROOT "/Volumes/xtools/armv8-rpi3-linux-gnueabihf/armv8-rpi3-linux-gnueabihf/sysroot")

#Enable POSIX Threading
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")

#Bring the headers in
include_directories(include)

#Wildcard add all source files in dir
file(GLOB SOURCES "src/*.c")

#Create the target
add_executable(gpsexample ${SOURCES})

#Link the standard math lib to the exec
target_link_libraries(gpsexample m)

我是否应该在其他地方添加库以获取System?我是否需要直接从Pi下载原始文件并将它们包含在自定义工具目录中?

感谢所有帮助。

0 个答案:

没有答案