编译不通过纠察

今天把一个在公用的函数功能块(检测水印时间)挪到另外一个cpp里面.当然这个模块调用了很多函数.然后挪好了,就是编译报错,是那种链接库的错误,这类错误不容易查找原因.

/usr/bin/ld: date_stamp.o: relocation R_X86_64_PC32 against undefined 符号 `_ZL16lstm_rec_processP4LSTMRSt6vectorIN2cv3MatESaIS3_EERS1_IPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISD_EE' can not be used when making a shared object; recompile with -fPIC

/usr/bin/ld: 最后的链结失败: 错误的值

collect2: error: ld returned 1 exit status

make: *** [liblarge.so.1.0.0] Error 1

17:07:52: 进程"/usr/bin/make"退出,退出代码 2 。

 一大堆提示信息,就是没有error提示,就是编译不通过.折腾了一会儿无解,找来li老师,他首先把函数名留着然后把函数体全注释掉编译通过,然后再慢慢少注释点函数体编译,通过,再取消注释一些函数体,然后发现到调用某个函数就会报错,然后找到原因...原来:

我调用的函数有一个是在公用cpp声明的static函数,static函数只能在本cpp里面调用,其他cpp是不给调用的,所以导致编译不通过,但是这类错误编译器不会显式的给出错误提示.get!

你可能感兴趣的:(初步编程)