2011-03-01 58 views
3

在獲取makefile以查找.c程序的正確庫和頭文件時出現問題我正在嘗試編譯。我試圖爲Apple的HTTP Live Streaming編譯一個開源的分段器,它需要libavformat和其他FFMpeg庫進行編譯。我使用Mac Ports來安裝FFMpeg,當我在命令行運行「which ffmpeg」時,它顯示的目錄是opt/local/bin/ffmpeg,但是在四處搜索之後,這似乎不是該庫的目錄。位於Snow Leopard上的FFMpeg的libavformat在哪裏?

看來,庫位於opt/local/include,因爲那是我看到頭文件的地方。這是我的makefile與疑似目錄:

所有: 的gcc -Wall -g live_segmenter.c -o live_segmenter -I /選擇/本地/包括-I /選擇/ local/bin目錄-I /選擇/ local/include/libavutil -L/opt/local/include/libavformat -libavformat -L/opt/local/include -libavcodec -L/opt/local/include -libavutil -L/opt/local/include -libavcore -lbz2 - LM -lz -lfaac -lmp3lame -lx264 -lfaad -lpthread

clean: 
rm -f live_segmenter 

這裏是輸出試圖編譯後:

gcc -Wall -g live_segmenter.c -o live_segmenter -I/opt/local/include -I/opt/local/bin - I/opt/local/include/libavutil -L/opt/local/include/libavformat -libavformat -L/opt/local/include -libavcodec -L/opt/local/include -libavutil -L/opt/local/include -libavcore -lbz2 -lm -lz -lfaac -lmp3lame -lx264 -lfaad -lpthread

ld: library not found for -libavformat 
collect2: ld returned 1 exit status 
make: *** [all] Error 1 

我也試圖運行「的ffmpeg -version」,看看ffmpeg的正確建立,它似乎是這樣我已經用完了就做什麼的想法。任何幫助或指向正確的方向都會很棒。謝謝!

回答

3

我認爲你有太多 - 我和不夠-L。從GCC(1)獅子:

-I dir 
    Add the directory dir to the list of directories to be searched for 
    header files. Directories named by -I are searched before the standard 
    system include directories. If the directory dir is a standard system 
    include directory, the option is ignored to ensure that the default 
    search order for system directories and the special treatment of system 
    headers are not defeated. 

-L dir 
    Add directory dir to the list of directories to be searched for -l. 

-l<libname>是一個連接指令,它告訴LD包括從lib<libname>無論在-L目錄列表。

試試這個,而是:

gcc -Wall -g live_segmenter.c -o live_segmenter -I/opt/local/include -L/opt/local/lib -lavcodec -lavutil -lavcore -lbz2 -lm -lz -lfaac -lmp3lame -lx264 -lfaad -lpthread

+0

哇以後7個月潛在的回答我的問題!太興奮了。我獨自離開了這個問題,並在其他事情上工作,但我一定會盡快嘗試這個問題,並讓你知道它是否工作!謝謝您的幫助。 – winnicki 2011-09-29 23:36:01

+0

ld:庫找不到-lavcore collect2:ld返回1退出狀態 make:*** [all]錯誤1 – winnicki 2011-10-18 03:57:37

+0

我認爲你的回答是對的這只是我似乎缺少/ opt/local中的avcore/lib出於某種原因,所以我認爲我需要用avcore配置FFMpeg。 *嘆息* – winnicki 2011-10-18 04:22:52