• 2024-07-03[debug]解决cmake编译报错:can not be used when making a PIE object:recompile with -fPIC
    问题描述最近在跟施磊老师的高性能服务器项目,使用make命令后一直报错以下问题解决方法报错一大堆recompilewith-fPIC,多半是链接静态库是出错了。根据网上经验,在CmakeLists文件中加入-no-pie,但是两种方法进行尝试后都没有效果。#第一种方法add_compile_options(-fPIC)#
  • 2024-07-02C++编译问题,解决arm下链接静态库,引起的relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol错误
    显示的完整错误如下:relocationR_AARCH64_ADR_PREL_PG_HI21againstsymbol`ZN2c43yml9free_implEPvmS1'whichmaybindexternallycannotbeusedwhenmakingasharedobject;recompilewith-fPIC根据提示,在链接.a静态库时,应该在编译时加上参数-fPIC然而CMake文件中已
  • 2023-11-12【GCC】windows环境编译dll文件
    使用如下指令生成动态库:gcctest.c-I./inc-fPIC-shared-olibtest.dll参数解释:-I:添加头文件搜索目录-fPIC:生成位置无关的代码,在编译动态库的时候需要使用该选项-shared:表明生成一个共享对象,也就是动态库
  • 2023-08-14linux 动态库生成
    命令:g++-Iincludetest.cpp-fPIC-shared-Wall-m64-std=c++11-O0-g-obin/test.so-g++:编译器的名称-Iinclude:添加了一个头文件搜索路径,包含名为"include"的目录test.cpp:被编译的源文件-fPIC:生成位置无关代码(PositionIndependentCode)-shared:生成共享库-W
  • 2023-07-11-fPIC选项
    -fPIC选项的生效阶段在编译阶段,使用-fPIC选项编译的.o文件会生成位置无关的代码通常在linux下用gcc编译动态库时都会加上一个-fPIC选项来生成位置无关代码。如果你的静态库可能会被动态库使用,那么静态库编译的时候就也需要-fPIC选项。【下面说了啥,我也看不懂了,可以不看】如果你
  • 2023-01-14gcc 编译参数 --- -fpic -fPIC
    gcc-shared-fPICliberr.c-oliberr.so-fPIC作用于编译阶段,告诉编译器产生与位置无关代码(Position-IndependentCode), 则产生的代码中,没有绝对地址,全部使用相对
  • 2023-01-09C++编译问题,解决arm下链接静态库,引起的relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol错误
    显示的完整错误如下:relocationR_AARCH64_ADR_PREL_PG_HI21againstsymbol`ZN2c43yml9free_implEPvmS1'whichmaybindexternallycannotbeusedwhenmakingasha
  • 2022-11-18recompile with -fPIC
    故事背景最近同事遇到一个比较奇怪的问题,直接开门见山吧。在动态库中调用静态库直接报错了recompilewith-fPIC,查看cmake的写法也没有问题,而且也是第一次遇见这个问题,所
  • 2022-11-17【c&c++】 -fpic 与-fPIC的区别
        在编译动态库的时候,我们应该需要使用-fpic或-fPIC参数。pic与PIC的异同相同点:都是为了在动态库中生成位置无关的代码。通过全局偏移表(GOT)访问所有常量地址
  • 2022-09-18can not be used when making a PIE object
    编译报错relocationR_X86_64_32against`.rodata'cannotbeusedwhenmakingaPIEobject;recompilewith-fPIEcollect2:error:ldreturned1exitstatusma