将Power-PC的工具链文件提供给CMAKE设置时出现“找不到-lgcc_s”错误

时间:2018-10-08 06:11:36

标签: linux gcc cmake cross-compiling powerpc

在尝试进行交叉编译时,我在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,使用“指定交叉编译的工具链文件”选项

enter image description here

当我为该选项输入相同的文件时。我再次遇到相同的问题:

  

/opt/freescale-2010.09/bin /../ lib / gcc / powerpc-linux-gnu / 4.5.1 /../../../../ powerpc-linux-gnu / bin / ld :   找不到-lgcc_s

  1. 该错误明确表明在指定的工具链路径下不存在libgcc_s。但是,如果不存在,它在情况1下的工作方式。
  2. 在第1种情况下,如何获取-static-libgcc标志,在第2种情况和第3种情况下,我需要在工具链文件中明确给出它。
  3. 即使在工具链文件中,如果我在第二和第三种情况下使用CMAKE_EXE_LINKER_FLAGS添加-static-libgcc,它仍然显示相同的错误。

我是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)

0 个答案:

没有答案