先报错:
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都会被覆盖
不知道你这个问题是否已经解决, 如果还没有解决的话: