在尝试进行交叉编译时,我在cmake中面临一些奇怪的问题。对于本机构建,它按预期运行:
情况1:工具链文件在CMakelists.txt文件的include()中给出。
对于Power-PC构建,当我以以下方式在CMakelists.txt文件中提供工具链文件时:
if(ARM)
include(config/toolchain_la9.cmake)
elseif(POWER-PC)
include(config/toolchain_lppc.cmake)
endif()
一切正常,我可以使用下面的编译器和链接器标志获取所有生成的可执行文件和二进制文件
/opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc -mdouble-float -msoft-float -static-libgcc -lpthread -lm -lrt
情况2:工具链文件是使用cmake -D命令给出的。
再次评论案例1的代码片段,并尝试提供与
相同的文件cmake PATH_TO_CMAKE_DIRECTORY -DCMAKE_TOOLCHAIN_FILE = / home / one / toolchain_files / toolchain_lppc.cmake
这次我无法交叉编译源代码。
,出现以下错误:
/opt/freescale-2010.09/bin /../ lib / gcc / powerpc-linux-gnu / 4.5.1 /../../../../ powerpc-linux-gnu / bin / ld : 找不到-lgcc _
s
案例3:对于Cmake-gui,使用“指定交叉编译的工具链文件”选项
当我为该选项输入相同的文件时。我再次遇到相同的问题:
/opt/freescale-2010.09/bin /../ lib / gcc / powerpc-linux-gnu / 4.5.1 /../../../../ powerpc-linux-gnu / bin / ld : 找不到-lgcc_s
我是cmake的新手。尽管对我来说似乎很有用,但在这里我陷于困境。
工具链文件的内容如下:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER /opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc )
set(CMAKE_CXX_COMPILER /opt/freescale-2010.09/bin/powerpc-linux-gnu-g++)
set(CMAKE_STRIP /opt/freescale-2010.09/bin/powerpc-linux-gnu-strip)
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/opt/freescale-2010.09/lib/gcc/powerpc-linux-gnu/4.5.1/")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mdouble-float -msoft-float")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mdouble-float -msoft-float")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)