用qt5编译代码时遇到一个关于无法重定向,提示添加-fPIC编译的问题

先报错:
relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol _ZSt4cerr@@GLIBCXX_3.4' which may bind externally can not be used when making a shared object; recompile with -fPIC 再 unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol_ZSt4cerr@@GLIBCXX_3.4'
ld: final link failed: Bad value
我查资料后给Makeflie文件的CFLAGS和CXXFLAGS 添加上-fPIC的选项,并没有解决问题,应该用怎样的方法来解决?

有可能是在编译代码时只给部分文件添加了-fPIC选项,而其他文件没有添加,导致链接器在链接时仍然遇到了无法解析的重定向问题。建议给整个项目添加-fPIC选项,包括所有的源文件和库文件。

修改Makefile文件,在CFLAGS和CXXFLAGS之后添加一个LDFLAGS选项

CFLAGS += -fPIC
CXXFLAGS += -fPIC
LDFLAGS += -shared

这样做可以确保编译器和链接器都使用-fPIC选项,并且生成的是一个共享库。请注意,LDFLAGS选项中的-shared参数告诉链接器生成一个共享库。
如果仍然遇到问题,可以考虑使用其他工具来构建项目,比如CMake或qmake。这些工具可以自动处理依赖关系和编译选项,可以更好地避免类似的问题。

你不是用Qt编译嘛干嘛要改makefile,应该改.pro或者CMakeLists吧,编译目录下的Makefile是临时的每次build都会被覆盖

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^