• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • ubuntu下編譯和鏈接的過程 &amp;&amp;編寫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

    就可以看到編譯和鏈接所需要的頭文件目錄和庫文件目錄。 如果發現不正確,可以修改/usr/local/lib/pkgconfig/opencv.pc文件,這個文件就是opencv的目錄配置

    目錄截圖為: 

    這個文件就記錄著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文件,把//的中文注釋刪除了哈。
    版權聲明:本文為shaopeng568原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/shaopeng568/article/details/79734414

    智能推薦

    centos7 編譯安裝amp

    轉載自: http://blog.51cto.com/11010461/2113093 略有修改(......)   centos7.4編譯安裝lamp lamp簡介 Linux+Apache+Mysql/MariaDB+PHP一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,但是因為常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序...

    綠色版MySql安裝及啟動時:&amp;amp;quot;MYSQL 服務無法啟動&amp;amp;quot;的3534問題,修改密碼

    首先下載 可以去mysql官網下載:https://dev.mysql.com/downloads/mysql/   點擊下載  我下載的版本是,下載以后解壓 放到自己需要的位置之后配置環境變量,在系統屬性 --> 高級 --> 高級 --> 系統變量 --> path中添加 “路徑/bin” 如我的:D:\Program Fil...

    [2018.04.17][水][日志][6][#171~#181][貪心算法][已經喪心病狂][背景-&amp;amp;amp;amp;gt;][最虛偽的算法]

    [背景]     在某日和某大佬們一起舉行的ACM上,我們小隊面對一道多重背包題跪了...涼涼(可喜的是我AC了C,G兩題)。     在面對大佬們的D題上,我們使用了,啊不,第一次使用了貪心算法,奇跡般的通過了九個點(死在了第十個點上) [貪心算法]     1. 貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做...

    Powershell &amp;amp;amp;amp; Powersploit 入門

    前言 PowerShell 是運行在 Windows上實現系統和應用程序管理自動化的命令行腳本環境。你可以把它看成是命令行提示符 cmd.exe 的擴充,或是顛覆。Powershell 需要.NET環境的支持,同時支持.NET對象。其可讀性,易用性,可以位居當前所有 shell 之首。 當前 PowerShell 有四版本,分別為 1.0,2.0,3.0 ,4.0 PowerShell簡...

    ubuntu14.04mysql5.7安裝&amp;amp;遠程連接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...

    猜你喜歡

    2.第一個頁面&amp;amp;分辨率和rpx

    1.文件骨架 2.移動端的分辨率和rpx...

    CSS 布局 - 水平 &amp;amp; 垂直對齊,全面的水平垂直居中方案

    CSS 布局 - 水平 & 垂直對齊,全面的水平垂直居中方案: 一、水平垂直居中對齊     居中效果主要用途在于 ① 元素框內的文本,圖像居中,使用text-align,vertical-align,line-height等達到效果 ② 布局時的div框水平垂直居中,使用margin,position等達到效果, 二、文本水平垂直居中, 1、文本水平居中 代碼: te...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    精品国产乱码久久久久久蜜桃不卡