ld:在 Makefile 中使用 -static-libstdc++ 时无法识别 -a 选项“tic-libstdc++”?
ld: unrecognized -a option `tic-libstdc++' when using -static-libstdc++ in Makefile?
我正在尝试将“fstream”库 link 添加到我的 C++ 内核中。
但是 linker 必须有 -static-libstdc++ 才能让它工作(和 G++)。但是当我去编译时,它说:
ld: unrecognized -a option `tic-libstdc++'
PS:我输入了整个内容 (-static-libstdc++)
有人知道为什么会这样吗?
这是我的 linker 命令:
ld -z max-page-size=0x1000 -Ttext=0x01000000 -static -Bsymbolic -static-libstdc++ -o $(TARGET) $(OBJS) build/GDT/GDTASM.o
-static-libstdc++
是一个编译器选项,而不是 linker 选项。您已经将 linker 设置为 link 带有静态库的对象文件 (-static
)。使用 -lstdc++
:
ld -z max-page-size=0x1000 -Ttext=0x01000000 -static -Bsymbolic -o $(TARGET) $(OBJS) build/GDT/GDTASM.o -lstdc++
库必须列在目标文件之后。
最好不用ld:
g++ -static-libstdc++ -Wl,-z -Wl,max-page-size=0x1000 -Wl,-Ttext=0x01000000 -Wl,-Bsymbolic -o $(TARGET) $(OBJS) build/GDT/GDTASM.o
我正在尝试将“fstream”库 link 添加到我的 C++ 内核中。 但是 linker 必须有 -static-libstdc++ 才能让它工作(和 G++)。但是当我去编译时,它说:
ld: unrecognized -a option `tic-libstdc++'
PS:我输入了整个内容 (-static-libstdc++)
有人知道为什么会这样吗? 这是我的 linker 命令:
ld -z max-page-size=0x1000 -Ttext=0x01000000 -static -Bsymbolic -static-libstdc++ -o $(TARGET) $(OBJS) build/GDT/GDTASM.o
-static-libstdc++
是一个编译器选项,而不是 linker 选项。您已经将 linker 设置为 link 带有静态库的对象文件 (-static
)。使用 -lstdc++
:
ld -z max-page-size=0x1000 -Ttext=0x01000000 -static -Bsymbolic -o $(TARGET) $(OBJS) build/GDT/GDTASM.o -lstdc++
库必须列在目标文件之后。
最好不用ld:
g++ -static-libstdc++ -Wl,-z -Wl,max-page-size=0x1000 -Wl,-Ttext=0x01000000 -Wl,-Bsymbolic -o $(TARGET) $(OBJS) build/GDT/GDTASM.o