ubuntu下編譯和鏈接的過程 &&編寫opencv makefile
編譯&&鏈接
編譯就是將源文件通過Complier,生成中間文件,在windows下,中間文件就是.obj 文件,在Ubuntu下,就是.o文件,即 Object File,這個動作叫做編譯(compile)。然后再把大量的Object File合成執行文件,這個動作叫作鏈接(link)。
過程
(1)在編譯時,編譯器只檢測程序語法,和函數、變量是否被聲明。如果函數未被聲明,編譯器會給出一個警告,但可以生成Object File。
(2)在鏈接程序時,鏈接器會在所有的Object File中找尋函數的實現,如果找不到,那到就會報鏈接錯誤碼(Linker Error),在VC下,這種錯誤一般是:Link 2001錯誤,意思說是說,鏈接器未能找到函數的實現。你需要指定函數的Object File.
-makefile文件
make命令執行時,需要一個 Makefile 文件,以告訴make命令需要怎么樣的去編譯和鏈接程序。
example
下面寫一個C++編譯openCV3.0的代碼的makefile文件書寫:這里我的openCV裝的是openCV3.2,并且借用了pkg-config 命令;
首先簡單說下pkg -config命令:
pkg-config 當你從源代碼編譯軟件時,用來提供依賴庫的信息的軟件
終端輸入pkg-config opencv --libs --cflags
目錄截圖為:
這個文件就記錄著opencv庫的版本、編譯參數、鏈接參數等信息
- 給出我的剛剛寫的makefile吧
INCLUDE = $(shell pkg-config --cflags opencv)
LIBS = $(shell pkg-config --libs opencv)
OBJECTS = LaneDetector.o mian.o//中間文件
SOURCE = LaneDetector.cpp mian.cpp //源文件
//不同的工程也就是修改這兩行里面的內容
BIN = bin
$(OBJECTS) : $(SOURCE)//編譯
g++ -c $(SOURCE)
$(BIN):$(OBJECTS)//鏈接
g++ -o $(BIN) $(OBJECTS) -I $(INCLUDE) $(LIBS)
clean:
rm $(OBJECTS) $(BIN)
運行代碼,直接在終端輸入
make bin
./bin
然后代碼就跑起來了 ××最后注意,要直接復制我的makefile文件,把//的中文注釋刪除了哈。
智能推薦
centos7 編譯安裝amp
轉載自: http://blog.51cto.com/11010461/2113093 略有修改(......) centos7.4編譯安裝lamp lamp簡介 Linux+Apache+Mysql/MariaDB+PHP一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,但是因為常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序...
綠色版MySql安裝及啟動時:"MYSQL 服務無法啟動"的3534問題,修改密碼
首先下載 可以去mysql官網下載:https://dev.mysql.com/downloads/mysql/ 點擊下載 我下載的版本是,下載以后解壓 放到自己需要的位置之后配置環境變量,在系統屬性 --> 高級 --> 高級 --> 系統變量 --> path中添加 “路徑/bin” 如我的:D:\Program Fil...
[2018.04.17][水][日志][6][#171~#181][貪心算法][已經喪心病狂][背景->][最虛偽的算法]
[背景] 在某日和某大佬們一起舉行的ACM上,我們小隊面對一道多重背包題跪了...涼涼(可喜的是我AC了C,G兩題)。 在面對大佬們的D題上,我們使用了,啊不,第一次使用了貪心算法,奇跡般的通過了九個點(死在了第十個點上) [貪心算法] 1. 貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做...
Powershell & Powersploit 入門
前言 PowerShell 是運行在 Windows上實現系統和應用程序管理自動化的命令行腳本環境。你可以把它看成是命令行提示符 cmd.exe 的擴充,或是顛覆。Powershell 需要.NET環境的支持,同時支持.NET對象。其可讀性,易用性,可以位居當前所有 shell 之首。 當前 PowerShell 有四版本,分別為 1.0,2.0,3.0 ,4.0 PowerShell簡...
ubuntu14.04mysql5.7安裝&遠程連接mysql
前言:基于ubuntu的14.04環境 1.mysql5.7.21的安裝 創建一個文件夾并進入該目錄 通過wget下載命令下載mysql官網上的5.7.21版本的mysql(其他系統的也是一樣的道理) 2018年3月13日9:04:04再次更新 如果上面的連接找不到地址的話,就去mysql官網那對應系統版本的mysql的連接 https://dev.mysql.com/downloads/mysq...
猜你喜歡
CSS 布局 - 水平 & 垂直對齊,全面的水平垂直居中方案
CSS 布局 - 水平 & 垂直對齊,全面的水平垂直居中方案: 一、水平垂直居中對齊 居中效果主要用途在于 ① 元素框內的文本,圖像居中,使用text-align,vertical-align,line-height等達到效果 ② 布局時的div框水平垂直居中,使用margin,position等達到效果, 二、文本水平垂直居中, 1、文本水平居中 代碼: te...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...