【问题标题】:ld: unrecognized -a option `tic-libstdc++' when using -static-libstdc++ in Makefile?ld:在 Makefile 中使用 -static-libstdc++ 时无法识别 -a 选项“tic-libstdc++”?
【发布时间】:2021-08-10 23:10:54
【问题描述】:

我正在尝试用 C++ 将“fstream”库链接到我的内核。 但是链接器必须具有 -static-libstdc++ 才能使其工作(和 G++)。但是当我去编译时,它说:

ld: unrecognized -a option `tic-libstdc++'

PS:我输入了整个内容(-static-libstdc++)

有人知道为什么会这样吗? 这是我的链接器命令:

ld -z max-page-size=0x1000 -Ttext=0x01000000 -static -Bsymbolic -static-libstdc++ -o $(TARGET) $(OBJS) build/GDT/GDTASM.o

【问题讨论】:

    标签: c++ ld


    【解决方案1】:

    -static-libstdc++ 是编译器选项,而不是链接器选项。您已经将链接器设置为将目标文件与静态库 (-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 
    

    【讨论】:

    • 这在大多数情况下都有效,只需将“-Wl,-estart”添加到 g++ 并在我的 kernel.cpp 中添加函数“main”。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多