2016-04-07 5 views
0

Ich versuche mich mit cmake vertraut zu machen und habe mich für einen sehr einfachen Hobbykernel entschieden, der im Assembly als Test-Bett geschrieben wurde. Das Problem ist, wie es scheint, der Linker vor der Zusammenstellung der Quellen genannt wird, bin ich diesen Fehler:cmake assembly:/usr/bin/ld: keine Eingabedateien

$ 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 

Hier ist die CMakeLists.txt Datei:

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 
    ) 

ich es annehmen, ist etwas offensichtlich Ich vermisse hier. Was ist die richtige Methode zum Erstellen einer Assembly mit einem benutzerdefinierten Linker-Skript?

Antwort

1

mit CMake, Fehlermeldung

/usr/bin/ld: no input files 

in der Regel bedeutet, dass CMake keine Datei übergeben hat recongnize, zu add_executable/add_library Befehl, als Quelldatei.

In dem gegebenen Fall .S Dateien werden nicht von CMake als Assembler-Dateien für ASM-ATT-Sprache behandelt. Wiki page, die mit CMAKE beschreibt die Montage, heißt es ausdrücklich, dass:

.S files, i.e. assembler files which require preprocessing, are not supported

Wenn Assembler Dateien Vorverarbeitung nicht benötigt werden, können Sie sie zu .s oder .asm Dateien umbenennen können, so CMake sie als Quelldateien für bestimmte Sprache behandeln.

Verwandte Themen