cmake 程序集:/usr/bin/ld:没有输入文件
cmake assembly: /usr/bin/ld: no input files
我正在尝试让自己熟悉 cmake
,并且我选择了一个用汇编编写的非常简单的爱好内核作为测试平台。问题是,似乎在编译源代码之前调用了链接器,我收到了这个错误:
$ make
[100%] Linking ASM-ATT executable kernel
/usr/bin/ld: no input files
CMakeFiles/kernel.dir/build.make:69: recipe for target 'kernel' failed
make[2]: *** [kernel] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/kernel.dir/all' failed
make[1]: *** [CMakeFiles/kernel.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
这是 CMakeLists.txt 文件:
cmake_minimum_required(VERSION 2.8)
project(kernel ASM-ATT)
enable_language(ASM-ATT)
set(CMAKE_ASM-ATT-COMPILER as)
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/linker.ld)
set(CMAKE_EXE_LINKER_FLAGS "-N -T${LINKER_SCRIPT}")
add_executable(${CMAKE_PROJECT_NAME}
multiboot.S
start.S
)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
LINK_DEPENDS "${LINKER_SCRIPT}"
LINKER_LANGUAGE ASM-ATT
)
我想我显然遗漏了一些东西。使用自定义链接描述文件构建程序集的正确方法是什么?
使用 CMake,错误信息
/usr/bin/ld: no input files
通常意味着 CMake 不识别任何文件,传递给 add_executable
/add_library
命令,作为 源文件.
在给定的情况下 .S
文件不会被 CMake 视为 ASM-ATT 语言的汇编文件。 Wiki page,它描述了使用 CMAKE 进行组装,明确指出:
.S files, i.e. assembler files which require preprocessing, are not supported
如果您的汇编程序文件不需要预处理,您可以将它们重命名为 .s
或 .asm
文件,这样 CMake 会将它们视为给定语言的源文件。
我正在尝试让自己熟悉 cmake
,并且我选择了一个用汇编编写的非常简单的爱好内核作为测试平台。问题是,似乎在编译源代码之前调用了链接器,我收到了这个错误:
$ make
[100%] Linking ASM-ATT executable kernel
/usr/bin/ld: no input files
CMakeFiles/kernel.dir/build.make:69: recipe for target 'kernel' failed
make[2]: *** [kernel] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/kernel.dir/all' failed
make[1]: *** [CMakeFiles/kernel.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
这是 CMakeLists.txt 文件:
cmake_minimum_required(VERSION 2.8)
project(kernel ASM-ATT)
enable_language(ASM-ATT)
set(CMAKE_ASM-ATT-COMPILER as)
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/linker.ld)
set(CMAKE_EXE_LINKER_FLAGS "-N -T${LINKER_SCRIPT}")
add_executable(${CMAKE_PROJECT_NAME}
multiboot.S
start.S
)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
LINK_DEPENDS "${LINKER_SCRIPT}"
LINKER_LANGUAGE ASM-ATT
)
我想我显然遗漏了一些东西。使用自定义链接描述文件构建程序集的正确方法是什么?
使用 CMake,错误信息
/usr/bin/ld: no input files
通常意味着 CMake 不识别任何文件,传递给 add_executable
/add_library
命令,作为 源文件.
在给定的情况下 .S
文件不会被 CMake 视为 ASM-ATT 语言的汇编文件。 Wiki page,它描述了使用 CMAKE 进行组装,明确指出:
.S files, i.e. assembler files which require preprocessing, are not supported
如果您的汇编程序文件不需要预处理,您可以将它们重命名为 .s
或 .asm
文件,这样 CMake 会将它们视为给定语言的源文件。