小编dri*_*est的帖子

CMake:将ELF嵌入可执行文件

我有一个项目需要访问嵌入到可执行文件中特殊部分的ELF文件。

我以前是手工制作Makefile的,只是有一个shell脚本,在其中使用objcopy将要嵌入的目标复制到.o文件中,然后在可执行文件中链接到该文件。

# Create a new section and copy the binary there ($1=input $2=output name)
objcopy --input-target binary --output-target elf64-x86-64 \
        --binary-architecture i386 $1 $2.o
Run Code Online (Sandbox Code Playgroud)

现在,我想摆脱自定义的Makefile,并使用CMake生成它们。但是,我看不到链接到此类文件的简便方法。我可以创建和添加此文件,但不能对其进行链接:

# Invoke script to package module as a library
add_custom_command(OUTPUT ${PACKAGED_FILE}
  COMMAND ./package.sh ${MODULE_FILE} ${PACKAGED_FILE}
  WORKING_DIRECTORY ${MODULE_DIR}
  DEPENDS ${MODULE_FILE}
  COMMENT packaging file into ELF object
  VERBATIM
)

add_custom_target(${PACKAGED_NAME} ALL DEPENDS ${PACKAGED_FILE})
Run Code Online (Sandbox Code Playgroud)

我试图用添加它:

target_link_libraries(binary ${PROJECT_BINARY_DIR}/${PACKAGED_FILE})
Run Code Online (Sandbox Code Playgroud)

但是,此操作失败,因为该文件尚不存在。会的,但是CMake不知道。将目标名称添加为链接库也无济于事,因为找不到它。将其添加为还依赖项也无济于事。有谁知道如何做到这一点?

c c++ makefile cmake elf

5
推荐指数
1
解决办法
2744
查看次数

标签 统计

c ×1

c++ ×1

cmake ×1

elf ×1

makefile ×1