gcc/g++ 编译常见问题

来源:互联网 发布:优化设计要遵循的原则 编辑:程序博客网 时间:2024/05/18 01:04

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


0 0
原创粉丝点击