最新ffmpeg編譯和用eclipse進行原始碼除錯(linux)
轉自:http://blog.csdn.net/huangkangying/article/details/6434683
最近由於專案需要,必須修改ffmpeg的原始碼進行修改才能滿足專案的需求,但以前我從來沒有自己去編譯和使用ffmpeg的原始碼,一直都是用別人編譯好了的sdk,再加上習慣了vs方便的編譯環境,要在linux下對如此多的原始碼進行編譯和除錯還真的是一件非常困難的事情。Linux下也沒別的什麼好的整合開發環境好用,沒辦法eclipse還湊合吧。好了,廢話就不多說了,直接進入正題吧。
第一部分: ffmpeg的編譯
首先要下載最新的ffmpeg原始碼:
由於我用的是教育網,用svn下載太tm的慢了,1kb/s,估計到明年都下不完。推薦一個網站,除了有ffmpeg的原始碼以外還有各個源的原始碼,並且用現成的sdk(windows下的)。
網址如下:
Step1: 網址
Step2: 版本問題
下載完成以後,一個很重要的工作要做,否則以後你在使用或者除錯ffmpeg的時候會出現很多莫名其妙的問題。一定要先檢查的清理你的linux下是否已經安裝了ffmpeg的庫檔案,如果安裝了,要先remove掉,否則到最近,你的庫有的是新的,有的是舊的,到用的時候給你報一堆版本錯誤,你就哭吧……具體做法:
下面是我在編譯的時候出現的版本錯誤:
ffmpeg: relocation error: ffmpeg: symbol postproc_configuration, version LIBPOSTPROC_51 not defined in file libpostproc.so.51 with link time reference
解決辦法:
$: apt-get remove ffmpeg
$: apt-get remove libavcodec52 libavdevice52 libavfilter0 libavformat52 libavutil49 libpostproc
$: apt-get remove libx264-dev
上面的解決辦法可能在不同的機子上不一樣,因為安裝的庫可能不同
如果還不行,就手動解決:
庫檔案的路徑:/usr/lib
標頭檔案的路徑:/usr/include
進入這些路徑看看是否有ffmpeg中的庫,如果有,都刪除掉。
Step3: 安裝ffmpeg所依賴的庫檔案:
$: sudo apt-get update
$: sudo apt-get install build-essential git-core checkinstall yasm texi2html libfaac-dev /
libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev /
libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
這個步驟中只提供最常用的配置所需要的庫檔案,如果在編譯ffmpeg中還有其它附加的配置,請使用新立得軟體管理器進行安裝。
Step4: 安裝x264
從Step1中的網址上下載x264原始碼:
$:./configure –enable-static
$:make
$:make install
Step5: 安裝ffmpeg
注意:
1. 如果是安裝庫檔案,一定要使用--enable-shared, 不然不會生成.so檔案。
2. 預設的庫檔案目錄是/usr/local/lib,我們把它修改為/usr, 這樣在安裝的時候方便
$: ./configure --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab --prefix=/usr
$: make
$: sudo make install
第二部分:使用eclipse進行除錯
Linux下也沒有什麼好用的整合開發環境,就eclipse吧。
首先下載eclispe + cdt,這個網上用ubuntu的software center就可以。
這裡要注意一下,使用eclipse進行除錯,如果ffmpeg原始碼的編譯中使用了—enable-shared選項,那麼在除錯時會出現無法step into的情況,這個問題折磨了我好久,後來才發現是.so檔案乾的事,唉……
重新配置:在ffmpeg原始碼的目錄下輸入
$: ./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-version3 --disable-optimizations --disable-asm
$: make
建立專案工程,這裡我們選File->new->Makefile Project with Existing Code
n 在Import Existing Code對話方塊中的Toolchain for Indexer Settings中選Linux GCC
然後點Browse找到原始碼資料夾
然後點OK->Finish
可以看到新建的工程中已經包含了所有的原始碼和編譯後的檔案。
右鍵點選ffmpeg_g選debug as->Local c/c++ Application->gdb/mi 然後Ok
好了,想怎麼調就怎麼調吧。
關於Eclipse的快捷鍵:
使用vs用習慣了,eclipse除錯時的快捷鍵不太好用,想改。
window->Preference->general->keys->Scheme: Microsoft visual studio
但隨之而來的一個問題,F10!
這個鍵在vs裡面是step over, 但eclipse中只要你一按f10就會出出file對話方塊,後來上網查了一下,解決的辦法如下:
Eclipse F10 Key mapping bug
$: gconftool-2 --get /desktop/gnome/interface/menubar_accel
F10
$: gconftool-2 --type string --set /desktop/gnome/interface/menubar_accel "ctrl-shift-m"
相關推薦
最新ffmpeg編譯和用eclipse進行原始碼除錯(linux)
轉自:http://blog.csdn.net/huangkangying/article/details/6434683 最近由於專案需要,必須修改ffmpeg的原始碼進行修改才能滿足專案的需求,但以前我從來沒有自己去編譯和使用ffmpeg的原始碼,一直都是用別人
內核級線程(KLT)和用戶級線程(ULT)
版權 href 說明 撤銷 設計 不能 開發 系統 恢復 內核級線程(KLT)和用戶級線程(ULT) tags: KLT ULT 內核級線程 用戶級線程 引言:本文涉及到操作系統的內核模式和用戶模式,如果不太懂的話,可以參看我的這篇文章內核模式和用戶模式,其中簡單的進行
使用Eclipse進行SWT程式設計(4)
8.2.2. 滑塊(Slider), 標尺(Scale)和進度條(ProgressBar)視窗元件標尺(Scale)表示一段可選擇的連續值。範圍可以用Scale類的setMinimum() 和setMaximum()方法設定。並可以使用getSelection()方法得到所選
使用Eclipse進行SWT程式設計(1)
使用Eclipse進行SWT程式設計(1)"The best way to predict the future is to invent it."—Alan Kay1. 為什麼要使用SWT?SWT是IBM開發一套跨平臺的GUI開發框架。為什麼IBM要建立另一種GUI呢?為什
png和bmp圖片畫素讀取(linux)
查詢當前目錄下的png和bmp圖片,將其畫素點讀取出來壓縮排theme.bin中,並將圖片的其他資訊如寬高壓縮前後大小和在theme.bin中的偏移位置儲存在bmpaddr.h中,方便在其他程式碼中讀取圖片畫素資訊。 main.c #include <
Logstash、Kafka和ElastaticSearch安裝以及簡單使用(Linux)
前段時間公司需要做一個日誌分析的需求,於是開始了對於日誌分析這方面的研究。現在系統中整合的是Fluem + elastaticSearch + 還有influxdb,如果基於這些做日誌分析的話,就可能需要使用Flume + kafka + elastaticSearch但是我
spring原始碼編譯和匯入eclipse
2、原始碼編譯 cmd進入spring原始碼根目錄,執行編譯原始碼:gradlew build 可能出現問題: (1)如果出現某些方法找不到,需要檢查下jdk版本,1.6版本的有些方法會找不到。需要升級jdk到1.7+ (2)出現:java.lang.OutOfMemoryError: GC overhea
用Eclipse 進行Vue開發
參考文件http://www.cnblogs.com/windy-love/p/9522312.html eclipse安裝codeminx 外掛 之後eclipse提示要安裝eslint,在工程目錄下D:\workspace\lajifenlei\garcol_wx\ 下執行npm i
Mac FFmpeg編譯和解決nasm/yasm not found or too old錯誤
FFmpeg編譯 下載程式碼:git clone https://git.ffmpeg.org/ffmpeg.git 然後輸入命令進行編譯:找到下載的目錄下,然後用命令進入這個資料夾下cd ffmpeg,然後輸入./configure。 竟然沒有編譯過出現錯誤是
Gradle Android最新自動化編譯指令碼教程(提供demo原始碼)
一、前言Gradle 是以 Groovy 語言為基礎,面向Java應用為主。基於DSL(領域特定語言)語法的自動化構建工具。上面這句話我覺得寫得很官方,大家只需知道Gradle可以用來android開發中進行多個專案依賴的自動化編譯指令碼,知道這點也就知道我們使用它的目的;為
64位 linux作業系統下如何編譯和執行32位原始碼
解決辦法: 1、執行命令: yum whatprovides libstdc++.so.6 然後會提示哪個安裝包有這個庫檔案如下: [[email protected] ~]# yum whatprovides libstdc++.so.6 Loaded plugins: aliases
首次用Eclipse進行android開發,能夠提高效率的配置
<=:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 二、解決Eclipse中android新增過載函式時引數為arg0,arg1的問題 解壓sources-19_r02.zip後,會得到包含了對應(android-19,
Weka原始碼分析(1)逆向工程Eclipse外掛ObjectAid和AmaterasUML的安裝方法
為了更好的分析Weka原始碼中各個類之間的關係,需要根據.java檔案將各個類之間的關係以UML中的類圖(Class diagram)的形式展示出來。在眾多可以實現逆向工程的Eclipse UML外掛中,我覺得AmaterasUML和ObjectAid是相對比較理想
怎樣用Eclipse進行遠端debug
什麼是遠端除錯,就是在A機器上利用Eclipse單步跟蹤除錯B機器上的Web應用,當然除錯A機器上Web應用也是沒有問題的,90%我都是除錯本機的Web應用,遠端除錯的意義我想我不用說了,大家都會想到它的好處,你可以在本地除錯非本地測試環境上的應用,這是
(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。 (4)求二叉樹的所有葉子及結點總數。
(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。(4)求二叉樹的所有葉子及結點總數。 include<stdio.h> #inclu
STM32CubeMX生成基於Eclipse的GCC工程(一)(工程模板用Jlink進行SWD單步除錯)
首先,新建STM32Cube工程,在SYS選單下選擇 Serial Wire。 進入工程選單下的設定介面更改Toolchain/IDE為TrueSTUDIO 點選工程-生成程式碼,可以看到生成的檔案 接下來新建一個eclipse空的C工程 新建工程成功後,把STM3
用Eclipse進行視覺化Java介面設計
下載後的VE是一個zip檔案,請將其壓縮包中plugins和features目錄下的內容解壓到eclipse安裝目錄的相應目錄中即可。如果你的eclipse是執行著的,請關閉並重新啟動eclipse。開始一個設計任務現在,所有程式安裝完成,筆者將用一個例子,來講解Visual Editor的使用。在這個例子中
Python和C|C++的混編(二):利用Cython進行混編
cde uil 有時 當前 class def 將在 python 混編 還能夠使用Cython來實現混編 1 下載Cython。用python setup.py install進行安裝 2 一個實例 ① 創建helloworld文件夾創建hellowor
用ASP.NET Core MVC 和 EF Core 構建Web應用 (二)
work nal nta 多個 包括 catch web 應用 自動 選項卡 本節學習如何執行基本的 CRUD (創建、 讀取、 更新、 刪除) 操作。 自定義“詳細信息”頁 學生索引頁的基架代碼省略了 Enrollments 屬性,因為該屬性包含一個集合。 在“詳細信息”
用ASP.NET Core MVC 和 EF Core 構建Web應用 (九)
fix pro school time lap namespace 繼承映射 數據庫表 eas 在上一節中,已經處理了並發異常。 本節將演示如何在數據模型中實現繼承。 在面向對象的編程中,可以使用繼承以便於重用代碼。 在本教程中,將更改 Instructor和 Studen