首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏10km的专栏

    eclipsecdt:-fPIC引起的线程局部变量(__thread)的SIGSEGV异常问题

    中关于-ftls-model选项的说明 -ftls-model选项用于指定tls变量的访问模型,引起我关注不是如何用它来设置tls-model,而是说明中的最后一行文字(如下图红框标):如果指定了-fpic 看到这里我想到了我的静态库B在编译时指定了-fPIC选项。于是我去掉-fPIC选项重新编译,再跟踪可以通过了。如下图,可以看出,没有-fPIC选项时生成的汇编代码与前面有-fPIC选项时是不一样的。 虽然到目前为止,我还不知道为什么eclipse下对-fPIC选项编译的静态库中的TLS调试会造成异常,但总算知道这个问题产生的条件,后续开发中就可以避免了。 导致SIGSEGV异常问题出现是在几个条件下都具备的情况下发生的: 1.静态库中使用__thread变量 2.静态库编译使用了-fPIC选项 3.eclipse调试跟踪静态库的代码 参考资料 《3.16

    1.1K10发布于 2019-05-25
  • 编译安装 proxychains-ng proxychains4

    D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC D_GNU_SOURCE -pipe -DLIB_DIR=\"/usr/lib\" -DSYSCONFDIR=\"/etc\" -DDLL_NAME=\"libproxychains4.so\" -fPIC -c -o src/debug.o src/debug.c cc -fPIC -Wl,--no-as-needed -ldl -lpthread -Wl,--soname,libproxychains4

    1.5K10发布于 2020-12-30
  • 来自专栏蓝天

    gcc链接参数--whole-archive的作用

    } // Makefile all: x x: x.cpp liba.so g++ -g -o $@ $^ liba.so: liba.a g++ -g -fPIC  -shared -o $@ $^ #g++ -g -fPIC -shared -o $@ -Wl,--whole-archive $^ -Wl,-no-whole-archive liba.a clean: rm -f x a.o liba.a liba.so $ make g++ -g -c a.cpp ar cru liba.a a.o g++ -g -fPIC  -shared -o liba.so liba.a #g++ -g -fPIC -shared -o liba.so -Wl,--whole-archive liba.a -Wl,-no-whole-archive // Makefile all: x x: x.cpp liba.so g++ -g -o $@ $^ liba.so: liba.a g++ -g -fPIC -shared

    9.4K20发布于 2019-03-14
  • 来自专栏10km的专栏

    cmake:动态链接库(so)中静态链接tcmalloc(gperftools2.4)暨静态链接libstdc++

    /libtcmalloc_minimal.a: could not read symbols: Bad value 大意就是需要用-fPIC参数重新编译tcmalloc,网上找了很多关于”can not be used when making a shared object; recompile with -fPIC”问题的文章(关于-fPIC参数,这个文章讲得挺详细《译与链接的问题 gcc -fPIC -shared》),解决这个问题的方法也大同小异,就是根据这个错误提示用-fPIC参数重新编译相关的库,这里是就是指要重新编译tcmalloc。 /configure CXXFLAGS=-fPIC make make install 然后再重新编译so,就通过了。 总结 如果在可执行程序中静态链接tcmalloc时,用默认参数编译tcmalloc就好了,无需带-fPIC参数, 但是在动态库(so)中静态链接tcmalloc,必须要用-fPIC重新编译tcmalloc

    2.8K10编辑于 2022-05-07
  • 来自专栏优雅R

    CentOS/Redhat R包使用新的gcc编译【更新】

    vi /root/.R/Makevars 将下面的内容写入打开的文件,然后保存: CXX11=/opt/rh/devtoolset-9/root/usr/bin/g++ -std=c++11 -fPIC CXX14=/opt/rh/devtoolset-9/root/usr/bin/g++ -std=c++14 -fPIC 如果没有root权限,可以通过conda来安装新版本的gcc,c++等: 1conda 如果使用的是miniconda,这个文件的内容可能就是这样的了: 1CXX11=~/miniconda3/bin/x86_64-conda-linux-gnu-g++ -std=c++11 -fPIC 2CXX14=~/miniconda3/bin/x86_64-conda-linux-gnu-g++ -std=c++14 -fPIC 这样就可以愉快地安装包了: 1> install.packages pthread -c xgboost_R.cc -o xgboost_R.o 33~/miniconda3/bin/x86_64-conda-linux-gnu-g++ -std=c++14 -fPIC

    2.4K10编辑于 2022-01-21
  • 来自专栏Rice嵌入式

    如何使用CMake编译RTT微内核

    -fpic --static -nostdinc") set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -march=armv7-a -marm -msoft-float -x assembler-with-cpp -O0 -g -fPIC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -marm - -nostdlib -n -pie -fpie -fPIC -fpic -Wl,-pie") set(microkernel_sdk_inc "${CMAKE_SOURCE_DIR}" -x assembler-with-cpp -O0 -g -fPIC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -marm - -nostdlib -n -pie -fpie -fPIC -fpic -Wl,-pie") 如何看我们添加的编译选项是否正确。

    2.6K20编辑于 2022-05-10
  • 来自专栏程序猿的那点事

    移植wireless tool到Android, /bin/sh:xx(命令) not found 问题的解决方案

    Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC

    2.5K20发布于 2020-07-15
  • 来自专栏罗西的思考

    [记录点滴] luaxml编译过程

    参考 http://blog.csdn.net/dc_show/article/details/38957991 0x01 编译错误 编译错误 1 make gcc -Os -Wall -c -fPIC 编译错误 2 make,这里可能会提示找不到llua 也需要修改Makefile [root@iZ255h7jx9sZ luaxml-master]# make gcc -Os -Wall -c -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1/ -c LuaXML_lib.c gcc -o LuaXML_lib.so -fPIC -shared generic platform specific rules: ARCH = $(shell uname -s) ifeq ($(ARCH),Linux) CFLAGS += -fPIC LFLAGS = -fPIC -shared LIBS = $(LIBDIR) $(LIB) -llua-5.1 -ldl EXESUFFIX = SHLIBSUFFIX

    89240发布于 2020-09-07
  • 来自专栏代码编写世界

    Linux环境g++编译TinyXML动态库

    {LD} -o @ {LDFLAGS} {OBJS} {LIBS} {EXTRA_LIBS}这一行修改为{LD} -o @ {LDFLAGS} {OBJS} {LIBS} {EXTRA_LIBS} -fPIC -fPIC这个参数最好带上,否则有的.so依赖这个.so时可能会出现问题,提示找不到这个.so什么的。 但在实际使用过程中,因为本人是调用该.so生成新的.so,而不是直接使用,最后编译时还是提示找不到libtinyxml.so,原因是编译阶段也需要-fPIC参数。 解决办法:在Makefile文件的DEBUG_CFLAGS和RELEASE_CFLAGS参数后面加上-fPIC

    7.4K20编辑于 2022-05-05
  • 来自专栏HHTjim'S 部落格

    go build 交叉编译

    输出Linux可执行文件: $ CGO_ENABLE=0 GOOS=linux GOARCH=amd64 go build -ldflags='-s -w -extldflags "-static -fpic Windows可执行文件: $ CGO_ENABLE=0 GOOS=windows GOARCH=amd64 go build -ldflags='-s -w -extldflags "-static -fpic 可执行文件: # Intel $ CGO_ENABLE=0 GOOS=darwin GOARCH=amd64 go build -ldflags='-s -w -extldflags "-static -fpic Silicon (M1) $ CGO_ENABLE=0 GOOS=darwin GOARCH=arm64 go build -ldflags='-s -w -extldflags "-static -fpic 参数 `-s -w` 表示减小体积,去除编译携带的符号表和调试信息 -s 忽略符号表和调试信息 -w 忽略DWARFv3调试信息,将无法使用gdb进行调试 -extldflags "-static -fpic

    2.8K40编辑于 2023-02-13
  • 来自专栏10km的专栏

    linux下boost编译安装全过程脚本塈bzip2编译安装全过程脚本

    参数 # 判断CFLAGS中是否已经有-fPIC选项,如果没有就添加,没有则不修改 if [ -z "$(grep '^\s*CFLAGS\s*=' $bzip2_makefile | grep '\- fPIC')" ] then echo "add -fPIC to CFLAGS in $bzip2_makefile" sed -i -r 's/(^\s*CFLAGS\s*=)(. *$)/\1-fPIC \2/' $bzip2_makefile exit_on_error else echo "found -fPIC in CFLAGS,no need modify 选项,如下: CFLAGS=-fPIC -Wall -Winline -O2 -g $(BIGFILES) 否则编译boost时会报错,在下载bzip2源码的脚本中有相关的代码用于自动在CFLAGS 定义中增加-fPIC选项 上面两个脚本中有不少相同的函数,为方便维护,在实际工程中,我是把它合并放在一个库文件中的,本文为了让每个脚本都能独立运行,才特别将公用函数分别复制到每个脚本中。

    2.5K70发布于 2018-01-03
  • 来自专栏子云笔记

    .so注入

    installINSTALL=/libCFLAGS+= -WallLDFLAGS+= -lc -ldl -lpam -lutilall: config libselinux.soclient:$(CC) -fPIC client.soconfig:@python config.py > const.hlibselinux.so: azazel.c pam.c xor.c crypthook.c pcap.c$(CC) -fPIC -g -c azazel.c pam.c xor.c crypthook.c pcap.c$(CC) -fPIC -shared -Wl,-soname,libselinux.so azazel.o

    97050编辑于 2022-11-16
  • 来自专栏韩曙亮的移动开发专栏

    【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )

    共享动态库编译参数 : 编译动态库需要添加 “-fPIC” 和 “-shared” 两个参数 ; 3 . isystem /root/NDK/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi" ③ 最终命令 : CC HEAD_LIB -fPIC arm-linux-androideabi" root@octopus:~/NDK/001_Compile# root@octopus:~/NDK/001_Compile# $CC $HEAD_LIB -fPIC 共享动态库编译参数 : 编译动态库需要添加 “-fPIC” 参数 , 先输出 .o 文件 , 然后 根据 .o 文化生成 静态库 ; 3 . isystem /root/NDK/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi" ③ 最终命令 : CC HEAD_LIB -fPIC

    9.9K30编辑于 2023-03-27
  • 来自专栏全栈程序员必看

    开源Fast R-CNN代码实现物体识别[通俗易懂]

    roi_pooling_op.cu.o roi_pooling_op_gpu.cu.cc \ -I $TF_INC -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC D_GLIBCXX_USE_CXX11_ABI=0 -o roi_pooling.so roi_pooling_op.cc \ # roi_pooling_op.cu.o -I TF_INC -fPIC D_GLIBCXX_USE_CXX11_ABI=0 -o roi_pooling.so roi_pooling_op.cc \ roi_pooling_op.cu.o -I TF_INC -fPIC psroi_pooling_op.cu.o psroi_pooling_op_gpu.cu.cc \ -I $TF_INC -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC D_GLIBCXX_USE_CXX11_ABI=0 -o psroi_pooling.so psroi_pooling_op.cc \ psroi_pooling_op.cu.o -I TF_INC -fPIC

    1.6K30编辑于 2022-09-13
  • 来自专栏大数据生态

    使用rds_dbsync同步Mysql数据至Greenplum

    -fPIC -DFRONTEND -I./ -I/usr/pgsql-9.5/include -I/usr/include/mysql -I. -fPIC -DFRONTEND -I./ -I/usr/pgsql-9.5/include -I/usr/include/mysql -I. -fPIC -DFRONTEND -I./ -I/usr/pgsql-9.5/include -I/usr/include/mysql -I. -fPIC -DFRONTEND -I./ -I/usr/pgsql-9.5/include -I/usr/include/mysql -I. -fPIC -DFRONTEND -I./ -I/usr/pgsql-9.5/include -I/usr/include/mysql -I.

    11.8K2116发布于 2021-03-25
  • 来自专栏潇湘信安

    Go语言内网资产探测工具

    mac sudo CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -a -ldflags '-s -w --extldflags "-static -fpic mac sudo CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -a -ldflags '-s -w --extldflags "-static -fpic linux sudo CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -ldflags '-s -w --extldflags "-static -fpic windows sudo CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -a -ldflags '-s -w --extldflags "-static -fpic

    98430编辑于 2023-03-21
  • 来自专栏java沉淀

    Centos7环境搭建安装jdk、tomcat、nginx、redis、fastDFS

    -o hash.lo hash.c cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -fPIC -o chain.lo chain.c cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -fPIC -o shared_func.lo shared_func.c cc - Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -fPIC -o ini_file_reader.lo ini_file_reader.c cc -g -O3 -c -fPIC -o base64.lo base64.c cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -fPIC -fPIC -o process_ctrl.lo process_ctrl.c cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -fPIC

    1.7K60发布于 2018-05-25
  • 来自专栏Linux

    【Linux】rocketmq-client-cpp 2.0.1 编译方法(基于 ARM 64 架构)

    /b2 -j$cpu_num cflags=-fPIC cxxflags=-fPIC --with-atomic --with-thread --with-system --with-chrono -- /b2 -j$cpu_num cflags=-fPIC cxxflags=-fPIC --with-atomic --with-thread --with-system --with-chrono -- "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC -fPIC -DBOOST_ALL_NO_LIB

    97210编辑于 2024-09-02
  • 来自专栏python3

    在Centos7上安装Python-de

    fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c src/pcm.c -o build/temp.linux-x86_64-2.7/src/pcm.o src/pcm.c

    1.1K50发布于 2020-01-09
  • 来自专栏AI算法与图像处理

    简单的Python调用C++程序

    C语言源文件:called_c.c //编译命令 gcc -o libpycall.so -shared -fPIC called_c.c #include<stdio.h> int foo ", &a, &b); return 0; } 在命令行或者终端输入: gcc -o libpycall.so -shared -fPIC called_c.c 生成libpycall.so -- --> obj.display(a); } } 在命令行或者终端输入编译命令: g++ -o libpycallcpp.so -shared -fPIC cpp_called.cpp 编译参数说明 -fPIC:生成位置无关目标代码,适用于动态连接;-L path:表示在path目录中搜索库文件,如-L.表示在当前目录;-I path:表示在path目录中搜索头文件;-o file

    1.7K20编辑于 2023-02-28
领券