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