gcc/g++ 编译常见问题

9 篇文章 0 订阅

1. error: ‘for’ loop initial declarations are only allowed in C99 mode

这是因为gcc基于c89标准,换成C99标准就可以在for循环内定义i变量了:

gcc src.c -std=c99 -o src

2. cpp引用.c文件 ,需要给.c文件编写个头文件才可以

3. relocation R_X86_64_PC32 against undefined symbol `DecodeSimpleBitmap(decoder_t*, unsigned char const*, int)' can not be used when making a shared object; recompile with -fPIC

去掉 头文件和c文件 函数前面的static即可

4.查看动态库中的函数  

nm -D libsubtitle_service.so


5. 编译程序遇到问题  relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;


发现编译的程序引用的一个库(.a文件)是直接用./configure 编译的, 64位机器不能直接./configure 进行配置,需要采用如下方式


CFLAGS="-O3 -fPIC" ./configure

make

make install


6. libopencv_core.a(persistence.cpp.o): In function `icvGets(CvFileStorage*, char*, int)':

静态库少东西,加上-lz -ldl 即可


7. 包含静态库的时候,顶层lib先链接,底层lib后链接


8. 出现undefined sample 的一个原因 , make clean 未完全清楚之前的.o文件,修改makefile即可


9. char*指针malloc后,不要给其赋指针,要用strcpy的方法拷贝数据。 不然会出现内存泄露,free该指针出现崩溃


10 。pthread_mutex_t  一定要初始化和释放,不然出了问题都不知道是哪里出了我勒个去。。。。pthread_mutex_init


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值