2

我正在尝试编写一个使用 x264 API 的小型 C 应用程序,但在编译带有 x264 libaray 链接的代码时遇到问题。

在 /project/ 目录中有两个子文件夹:/project/mycode/ 和 /project/x264-snapshot-20120120-2245。

我已经使用 ./configure 然后“make”在后一个子目录中安装了 x264。因此,我想我想链接到的库是 /project/x264-snapshot-20120120-2245/libx264.a

在 /project/mycode/ 我有一个源代码文件 (prototype.c),它具有以下导入:

#include <stdio.h>
#include <inttypes.h>
#include "../x264-snapshot-20120120-2245/x264_config.h"
#include "../x264-snapshot-20120120-2245/x264.h"

正如预期的那样,如果我尝试在不链接到 x264 库的情况下进行编译,则会收到错误消息:

/project/mycode: gcc -o prototype prototype.c
/tmp/cc5NwRTp.o: In function `main':
prototype.c:(.text+0x6c): undefined reference to `x264_param_default_preset'
prototype.c:(.text+0xf6): undefined reference to `x264_param_apply_profile'
collect2: ld returned 1 exit status

所以我尝试链接我上面提到的库,但没有找到:

/project/mycode: gcc -o prototype prototype.c -I../x264-snapshot-20120120-2245/ -llibx264.a
/usr/bin/ld: cannot find -llibx264.a
collect2: ld returned 1 exit status

我尝试了一些变化,例如:

gcc -o prototype prototype.c -I../x264-snapshot-20120120-2245/ -l ../x264-snapshot-20120120-2245/libx264.a
gcc -o prototype prototype.c -I../x264-snapshot-20120120-2245/ -llibx264
gcc -I ../x264-snapshot-20120120-2245/ -llibx264.a -o prototype prototype.c

到目前为止可能很明显,我对此很陌生,所以我希望有一个简单的解决方案

4

1 回答 1

2

对于将来关注此问题的任何人,答案是:

gcc -pthread -o prototype -L../x264-snapshot-20120120-2245/ -lx264 -lm

-L指定库的目录并-l指定库的名称,减去“lib”前缀和“.a”后缀。x264库也需要-lmand参数。-pthread

于 2012-01-27T18:00:12.090 回答