zoukankan      html  css  js  c++  java
  • C++ bug记录(1)——cmakefPIC标志使用——libmbedtls.a(ssl_tls.c.o): relocation R_X86_64_PC32 against symbol `mbedtls_x509_crt_profile_suiteb'

    cmake fPIC标志使用

    1. 背景

    有需求如下:

    1. 使用静态编译后的mbedtls给我的项目test使用
    2. test最终想要编译为动态链接库,即shared

    2. 报错信息

    如果不加fPIC,正常编译mbedtls生成.a文件, 编译test时报错如下:

    libmbedtls.a(ssl_tls.c.o): relocation R_X86_64_PC32 against symbol mbedtls_x509_crt_profile_suiteb  can not be used when making a shared object; recompile with -fPIC 
    意思是让重新带上-fPIC编译(自己百度-fPIC的用途)
    

    3. 解决方法

    3.1 CMakelists.txt中修改

    # cmakelists.txt中添加如下
    
    # 以下两个看自己用的C++还是c编译器
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
    

    具体的:

    # add -fPIC
    
    [mbedtls-mbedtls-2.16.5]$ vim CMakeLists.txt
    
    # 在CMAKE_C_FLAGS标识中增加-fPIC
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -W -Wdeclarati    on-after-statement -Wwrite-strings -fPIC")
    
    cmake ..
    make
    # 然后再用.a文件即可
    

    https://github.com/ARMmbed/mbedtls/issues/3324

    3.2 make 命令

    以下摘自:https://www.cnblogs.com/HuangWj/p/6739255.html

    make CFLAGS='$CFLAGS -fpic'
    
  • 相关阅读:
    2017/4/14 afternoon
    2017/4/14 morning补
    2017/4/13 afternoon
    2017/4/13 morning
    2017/4/12 afternoon
    2017/4/12 morning
    4.17上午
    4.14上午
    4.13下午
    4.13上午
  • 原文地址:https://www.cnblogs.com/whuwzp/p/fpic_cmake.html
Copyright © 2011-2022 走看看