![](/img/trans.png)
[英]Difference between --static and -static LD_FLAGS in Makefile.am
[英]What's the difference between these 2 pieces of Makefile.am code?
我對使用 autotools 完全陌生,所以這可能是一個愚蠢的問題,但我還是會嘗試。 我有兩塊Makefile.am
。 除了一個工作正常而另一個工作不正常。
這很好用。
sbin_PROGRAMS = kernel
kernel_SOURCES = \
src/arch/$(host_cpu)/arch_sysdefs.h \
src/arch/$(host_cpu)/boot.asm \
src/arch/$(host_cpu)/cpu.asm \
src/arch/$(host_cpu)/isr.asm \
src/kmain.cpp
但這不是。 .asm
文件被生成的Makefile
完全忽略。
if HOST_CPU_X86
ASM_EXT = .asm
else
ASM_EXT = .S
endif
sbin_PROGRAMS = kernel
kernel_SOURCES = \
src/arch/$(host_cpu)/arch_sysdefs.h \
src/arch/$(host_cpu)/boot$(ASM_EXT) \
src/arch/$(host_cpu)/cpu$(ASM_EXT) \
src/arch/$(host_cpu)/isr$(ASM_EXT) \
src/kmain.cpp
我想做的是,我想為我的項目將要支持的某些 CPU 的程序集文件使用不同的后綴。
我還添加了將.asm
轉換為 object 文件的必要規則。
.asm.o:
yasm -f $(YASM_OUT_FMT) $< -o $@
編輯:用echo $(kernel_SOURCES)
臨時覆蓋.cpp.o
規則顯示 kernel_SOURCES 中的$(ASM_EXT)
kernel_SOURCES
正確替換。 例如,對於 x86-64 CPU,src/ src/arch/$(host_cpu)/boot$(ASM_EXT)
變為src/arch/x86_64/boot.asm
,對於 ARM 等,變為src/arch/arm/boot.S
。另外,設置ASM_EXT
來自 autoconf.ac 的變量沒有任何區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.