1、x264_encode.c:72:对‘x264_encoder_open_157’未定义的引用
首先感谢该博客提供的帮助:https://blog.csdn.net/CrystalShaw/article/details/88822736
该问题由于x264库没有及时更新导致,为什么需要更新呢?因为该工程原本在IMX6ULL上进行交叉编译的,应用的库是较早版本的x264库,对应的文件都比较旧,然而在Ubuntu系统中,我下载了最新的x264库,原本的旧版本x264.h头文件对于新版本的libx264.a来说,就落后了,此时需要更新库需要的头文件。进入到下载的新版本的x264文件中打开x264.h,可以查看当前的版本号如下:原本工程中的版本号为:,两者需要匹配,用新版本x264.h替代旧版本,重新编译,问题解决
2、在函数‘x264_8_opencl_load_library’中:
opencl.c:(.text+0xbb):对‘dlopen’未定义的引用
opencl.c:(.text+0xd4):对‘dlsym’未定义的引用
opencl.c:(.text+0xee):对‘dlsym’未定义的引用
opencl.c:(.text+0x108):对‘dlsym’未定义的引用
opencl.c:(.text+0x122):对‘dlsym’未定义的引用
opencl.c:(.text+0x13c):对‘dlsym’未定义的引用
对于“XXX”未定义引用的问题,一般是缺少相应函数的具体实现,该问题是缺少了dlopen
、dlsym
、dlerror
、dlclose
这些函数的实现,这几个函数是用于加载动态链接库的,编译的时候需要添加-ldl
来使用dl
库,不过需要注意的是,gcc
编译的时候,存在各个文件依赖顺序的问题,如果一个文件a依赖于文件b,那么编译的时候就需要a在b在后。对于该问题的具体描述,可以参照下面的博客,对该博主的分享表示感谢:https://www.cnblogs.com/oloroso/p/4688426.html
3、对‘pthread_create’未定义的引用
该问题与第二个问题相同,Makefile中加入“-lpthread”,注意依赖顺序,修改后的Makefile的库链接语句为:
困扰了几天的问题都与Makefile有关,自己也没有专门研究过,这次敲响了警钟,还需要继续努力,仅以此篇记录应用x264库时出现的相关问题,x264库的安装可以参考现有博客,资源很是丰富。