簡體   English   中英

gcc:鏈接外部庫

[英]gcc: Linking an External Library

在program.c中,我想使用libavcodec / avcodec.h中定義的方法'avcodec_register_all()'。

運行

gcc program.c -L$HOME/ffmpeg/lib/libavfilter.a -L$HOME/ffmpeg/lib/libavcodec.a

給我一個錯誤

/tmp/ccNeQywU.o: In function `main':
program.c:(.text+0x3f): undefined reference to `avcodec_register_all'
collect2: ld returned 1 exit status

拼寫正確,功能已定義。 為什么會這樣呢?

program.c

#include <stdio.h>

int main (int args, char *argv[])
{
 avcodec_register_all();
}

就是這樣

gcc -static -lavfilter -lavcodec -L/HOME/ffmpeg/lib/

您需要包括文件avcodec.h並在gcc的包含路徑標志中添加該文件的路徑。

gcc -static -lavfilter -lavcodec -L$HOME/ffmpeg/lib/ -I$HOME/ffmpeg/include

給出static是因為您嘗試使用* .a庫而不是* .so(動態)。

使用-lavcodec和現有參數來gcc

原因之一可能是函數avcodec_register_all()在C ++文件中定義。 應該在avcodec.h其定義為extern "C" ,並且應該使用適當的avcodec.h編譯該庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM