小鸟向前飞 2017-11-23 06:21 采纳率: 0%
浏览 4415
已结题

cmake编译错误"recompile with -fPIC"

使用cmake首先编译了一个静态库,这个静态库链接其他的动态库(log4cpuls.so)。
然后在编译另外一个动态库的时候遇到如下链接错误:

 Linking CXX shared library libfcnetwork.so
/usr/bin/ld: ../ssqhelper/libssqhelper.a(cpu_binder.cpp.o): relocation R_X86_64_32 against `.bss' can not be used when making a shared object; recompile with -fPIC
../ssqhelper/libssqhelper.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [fcnetwork/libfcnetwork.so] Error 1
make[1]: *** [fcnetwork/CMakeFiles/fcnetwork.dir/all] Error 2

我已经在cmake文件里加了
SET(CMAKE_CXX_FLAGS "-fPIC")
SET(CMAKE_C_FLAGS "-fPIC")
但还是报这个错误,请问是哪里需要修改吗?报错中提到了cpu_binder.cpp,这个文件里引用了sys/sysinfo.h sched.h pthread.h vector unordered_map 几个头文件。
以下是动态库的cmakelists

 PROJECT(fcnetwork)

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -fPIC -ggdb ")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall -fPIC")

SET(CMAKE_CXX_FLAGS "-fPIC")
SET(CMAKE_C_FLAGS "-fPIC")


ADD_DEFINITIONS(-std=c++11)

INCLUDE_DIRECTORIES(../3rd/log4cplus_1_2_1/include ../3rd/libevent_2_1_8/include include)

LINK_DIRECTORIES(../3rd/libevent_2_1_8/debug ../3rd/log4cplus_1_2_1/debug ./ssqhelper)

AUX_SOURCE_DIRECTORY(src DIR_SRC)

ADD_LIBRARY(${PROJECT_NAME} SHARED ${DIR_SRC})

TARGET_LINK_LIBRARIES(${PROJECT_NAME} ssqhelper log4cplus event-2.1 event_core-2.1 event_extra-2.1 event_pthreads-2.1 pthread ld)

下面是静态库的cmakelists

 cmake_minimum_required(VERSION 2.8)

PROJECT(ssqhelper)

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb ")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

ADD_DEFINITIONS(-std=c++11)

INCLUDE_DIRECTORIES(../3rd/log4cplus_1_2_1/include)

LINK_DIRECTORIES(../3rd/log4cplus_1_2_1/debug)

INCLUDE_DIRECTORIES(include)

AUX_SOURCE_DIRECTORY(src DIR_SRC)

ADD_LIBRARY(ssqhelper STATIC ${DIR_SRC})

TARGET_LINK_LIBRARIES(${PROJECT_NAME} log4cplus)

展开全部

  • 写回答

1条回答 默认 最新

  • 一路前行_barry 2017-11-23 18:59
    关注

    你这个先试试Make clean 下,再进行Make.

    评论
    TY~Cc 2023-02-06 08:53

    还是不行,要怎么处理?

    回复
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部