首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将特定链接脚本(*.lds)与CMake结合使用?

如何将特定链接脚本(*.lds)与CMake结合使用?
EN

Stack Overflow用户
提问于 2017-03-23 14:16:43
回答 1查看 3.9K关注 0票数 6

我正试图用CMake编写一个简单的程序(我的项目位于test)。演示源代码如下:

my.c

代码语言:javascript
复制
void mymain(void)
{
    int a=0;
    a++;
    a++;
}

链接脚本文件是:

my.lds

代码语言:javascript
复制
ENTRY(mymain)
SECTIONS
{   
   . = 0x10000;
   .text : { *(.text) }
   . = 0x8000000;
   .data : { *(.data) }
   .bss : { *(.bss) }
}

我可以用下面的命令编译它:

代码语言:javascript
复制
gcc -c my.c
ld -T my.lds -o my my.o

但是我不知道如何对CMake做同样的事情,因为cmake总是使用它自己的.lds脚本。

我尝试过搜索google和堆栈溢出,但是所有的方法都失败了。

代码语言:javascript
复制
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'

我试过CMakeLists.txt如下:

代码语言:javascript
复制
PROJECT(FreeRtos)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

set(CMAKE_EXE_LINKER_FLAGS_DEBUG " -T ${CMAKE_SOURCE_DIR}/my.lds -static")

AUX_SOURCE_DIRECTORY(. MYSRC)
ADD_EXECUTABLE(my  ${MYSRC} )

set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)

还有这个

代码语言:javascript
复制
CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(LINKERSCRIPT C)
# dummy.c must exist:
ADD_EXECUTABLE(EXE my.c dummy.c)
# linkerscript must exist:
SET_SOURCE_FILES_PROPERTIES(
        dummy.c PROPERTIES OBJECT_DEPENDS ${CMAKE_SOURCE_DIR}/my.lds
        )

我在CMakeFiles/EXE.dir/中查看了CMakeFiles/EXE.dir/,它显示:

代码语言:javascript
复制
 /usr/bin/cc  -g     -T /os_dev/workspace/test/ezio/tool/eo/freertos-pine64/Source/t2/my.lds -static CMakeFiles/my.dir/my.c.o  -o my -rdynamic

我试图用以下命令与ld交换cc:

代码语言:javascript
复制
SET(CMAKE_C_LINK_EXECUTABLE "/usr/bin/ld <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS>  -o <TARGET>")

它可以工作,link.txt显示CMake将使用my.lds。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-24 07:52:50

CMake没有ldscript的特殊变量,因此您可以使用附加适当的链接器标志

代码语言:javascript
复制
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T ${CMAKE_SOURCE_DIR}/my.lds")

(应该在中的 project()调用之后放置CMakeLists.txt)。

有关在that question中设置链接器标志的详细信息,请参阅CMake。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42978674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档