1. 程式人生 > >Linux下編譯並使用Qt第三方圖形控制元件qwt(Ubuntu12.04 + Qt4.8.1 + qwt6.1.2)

Linux下編譯並使用Qt第三方圖形控制元件qwt(Ubuntu12.04 + Qt4.8.1 + qwt6.1.2)

編譯環境

主機系統: VMWare + Ubuntu 12.04 (32位)
編譯器版本: gcc-4.6.3
Qt版本: Qt-4.8.1 + Qt Creator-2.5.0
qwt版本: qwt-6.1.2

安裝步驟

cd qwt-6.1.2
qmake-qt4 qwt.pro
make 
make install

等待片刻即可。

注:
1)install需要root許可權
2)qmake-qt4就是Qt4.8.1的qmake程式,由於博主的Ubuntu下還有嵌入式版本的QtE4.6.3,兩個版本的Qt庫都加入了系統的PATH環境變數中,因此為了避免衝突,遂將4.8.1版本的qmake重新命名為qmake-qt4,將4.6.3版本的qmake重新命名為qmake-arm
3)qwt預設將被安裝在/usr/local/qwt-6.1.2目錄下

安裝完成後,開啟/usr/local路徑,可以發現已經自動生成了一個qwt-6.1.2目錄,剛才安裝的所有檔案都在這裡,包括以下幾個子目錄:

  • doc:又包括html和man兩個目錄,qwt的說明文件都在這裡,其中html目錄就是qwt官方網頁的本地版本
  • features: qwt的安裝配置檔案,實際上是從原始檔根目錄中直接複製過來的,在安裝的時候由於直接使用預設配置,所以就沒修改,但是在工程中使用qwt的時候還是需要用到這些檔案的,後面會介紹
  • include:所有qwt控制元件的標頭檔案都在這裡
  • lib:核心部分,由於預設配置檔案是將qwt庫編譯成動態庫,因此本目錄下是4個so檔案(實際上只有一個庫檔案,另外三個是軟連線)
  • plugins: Qt Designer的外掛,用於在Designer或Creator設計器中將qwt顯示在左側的控制元件列表中

使用qwt

安裝qwt的Designer外掛

安裝外掛並不是必須的,因為可能一個qt專案根本沒用到Designer,但是對於使用Designer的專案,將qwt控制元件在Designer中顯示以供直接拖拽使用是一個不錯的選擇。

安裝外掛很簡單,只要將qwt/6.1.2/plugins目錄下的libqwt_designer_plugin.so檔案複製到Creator或Designer的外掛目錄下即可。作為參考,在博主的Ubuntu下外掛目錄分別為:
Creator:

/opt/qtcreator-2.5.0/bin/designer
Designer:/usr/lib/i386-linux-gnu/qt4/plugins/designer

操作完成後,開啟Creator或Designer,就可以在控制元件列表中看到qwt控制元件了

在工程中使用qwt控制元件

在Qt Creator中新建一個包含.ui檔案的工程,然後直接在設計器介面,隨便拖放一個qwt控制元件到對話方塊中,點選build進行編譯,這時候會提示諸如qwt_xxx.h標頭檔案未找到的錯誤,這是因為qwt控制元件的標頭檔案和庫檔案沒有被找到。

解決方法很簡單,開啟pro工程檔案,在檔案尾部加入如下一段即可:

#qwt setting

QWT_ROOT = /usr/local/qwt-6.1.2 #qwt控制元件安裝位置,注意與qwtconfig.pri配置檔案配合修改

include ( $${QWT_ROOT}/features/qwt.prf )

#end qwt setting

實際上這也是官方說明文件中提倡的使用qwt控制元件的方法,但需注意,qwt文件中寫的是
include ( ${QWT_ROOT}/features/qwt.prf ) ,只有1個$符號,這是無法生效的,應當使用2個$$符號。

pro檔案修改完成後,重新點選build按鈕,即可成功編譯。

編譯成功後,點選執行run按鈕,會發現執行出錯,提示找不到libqwt.so庫檔案,這是因為我們使用qwt動態連結庫的方式編譯程式的,而系統執行環境(注意與編譯環境的區別)中卻沒有將qwt動態庫的位置新增進來,最簡單的方法是直接修改Qt Creator的Run Environment,在其LD_LIBRARY_PATH中增加qwt動態庫的絕對路徑/usr/local/qwt-6.1.2/lib即可。

Run Environment

路徑設定成功後,點選Creator中的Run按鈕,即可成功執行程式看到qwt控制元件的效果了。

注: 實際上,執行時找不到庫檔案還有一個很好的解決辦法,就是使用Qt引數:QMAKE_RPATHDIR,這個引數的官方解釋是:This is used on Unix platforms only. A list of library directory paths, these paths are added to the executable at link time so that the paths will be preferentially searched at runtime.
意思就是在Unix平臺下,這個引數可以在程式連結階段就將執行階段所需的動態庫的存放路徑資訊寫入可執行檔案中,這樣在程式執行時會優先從該路徑下尋找需要的動態庫檔案。顯然,此方式非常適用於在程式設計時就確定使用者會把所需動態庫安裝在某一特定目錄下的情況,或者是程式許可權不足只能將動態庫安裝至使用者的非常規庫路徑下的情況。qwt配置檔案直接支援了這種方式,但並不是預設配置。配置方式是,開啟/usr/local/qwt-6.1.2/features/qwt.prf檔案,將倒數第二行的# QMAKE_RPATHDIR *= $${QWT_INSTALL_LIBS}前面的#號註釋符刪去,重新編譯即可,這樣就無需在執行環境中設定LD_LIBRARY_PATH了。

以上簡單介紹了Ubuntu下編譯安裝qwt的過程,下一篇文章將會介紹如何交叉編譯qwt並在Mini2440開發板上執行。

相關推薦

Linux編譯使用Qt第三方圖形控制元件qwtUbuntu12.04 + Qt4.8.1 + qwt6.1.2

編譯環境 主機系統: VMWare + Ubuntu 12.04 (32位) 編譯器版本: gcc-4.6.3 Qt版本: Qt-4.8.1 + Qt Creator-2.5.0 qwt版本: qwt-6.1.2 安裝步驟 cd

Linux 編譯安裝配置 Qt 4.53全過程

雙擊 win port 環境 簡單的 類型 http you ner 最近準備做 Nokia 的 Symbian,Maemo 下觸摸屏開發。考慮到程序的跨平臺可移植性,最終選擇使用 Qt 開發。相對來說,國內關於 Qt 相關文檔並不算很多。作者將 Linux

嵌入式 Linux編譯使用curl靜態庫

 #x86  ./configure --disable-shared --enable-static --disable-ftp --disable-ipv6 --disable-rtsp --disable-tftp --disable-telnet --disable

初學,Linuxgtk+,glade,一些控制元件的使用函式

連線glade gtk_init (&argc, &argv); GtkBuilder *builder; builder = gtk_builder_new (); gtk_builder_add_from_file (builder, "(路徑)檔名.glade"

LinuxMySQL5.7.18二進制包安裝無默認配置文件my_default.cnf

一點 utf8 user 二進制 width which 密碼 用戶 location 本文出處:http://www.cnblogs.com/wy123/p/6815049.html 最新在學習MySQL,純新手,對Linux了解的也不多,因為是下載

qt超強繪圖控制元件qwt

qwt是一個基於LGPL版權協議的開源專案, 可生成各種統計圖。它為具有技術專業背景的程式提供GUI元件和一組實用類,其目標是以基於2D方式的窗體部件來顯示資料, 資料來源以數值,陣列或一組浮點數等方式提供, 輸出方式可以是Curves(曲線),Slider(滾動條),Di

在 CentOS 7上安裝配置 Python 3.6 環境 超詳細的 Linux CentOS 編譯安裝python3 Linux編譯安裝python3

前言 按照此方法安裝保證以下報錯什麼的統統都沒有! 基礎環境 系統:centos7.4 軟體:python3 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connect

linux編譯ffmpeg,加入H264編碼支援

1.libx264 編譯 ./configure --enable-static --disable-asm --prefix=/usr/local/ffmpegRedHat make make in

linux編輯編譯執行C/C++/python程式

1,C和C++程式 http://www.2cto.com/kf/201207/140035.html http://blog.chinaunix.net/uid-20620288-id-3217203.html 其中,如果hello.c 程式中含有數學函式,用gcc編譯

Linux系統編譯執行C++程式

引言 為什麼要在Linux下寫程式? 首先要問一下自己,為什麼要寫這個程式。 如果我們寫一個執行在windows平臺的應用程式,那麼用Linux寫肯定是傻瓜或者強迫症,因為在windows平臺除錯windows程式可以更容易發現並解決問題,反過來也一樣,在

linux壓縮分割稀疏文件

壓縮文件 linux 虛擬機 count 空間 分割 壓縮 稀疏文件是指一個文件中大部分內容都是空字符的文件。如虛擬機創建的100G的磁盤文件是,但系統不會馬上分割出100G的空間,而是僅標識出虛擬硬盤文件是稀疏文件,待到數據存儲時,再分配空間,這樣可以大大的節約磁盤利用率。稀疏文件在進行

奪命雷公狗---linux NO:42 linux編譯apache

amp ima -1 輸入 inux png apach logs lin 我們先來到apache官網下載他,地址:http://httpd.apache.org/ 鼠標右鍵將他的地址復制出來,然後到linux 服務器上進行 wget 將他下載出來,如下所示

Linux編譯安裝memcached

linux memcache 一.在編譯安裝之前,先安裝系統所需要的相關庫文件#yum -y install gcc gcc-c++ make cmake libtool autoconf libaio二.下載相應的依賴庫和memcached源碼包1.從http://libevent.org/下載li

linux編譯安裝php各種報錯大集合

linuxPHP開源腳本語言PHP(外文名: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,入門門檻較低,易於學習,使用廣泛,主要適用於Web開發領域。PHP的文件後綴名為php。本文為大家整理匯總了一些linux

arm linux編譯庫System.Net.Primitives.dll和System.Xml.XmlSerializer.dll

cad serial linu 5.4 mcs download 切換 mon dll 1.環境: /home/jello # uname -aLinux 3.10.0 #2 SMP Mon Mar 6 17:52:09 CST 2017 armv7l GNU/Linux

LinuxC語言的進程控制編程

ring func align 能夠 c語言 cve tpi endif def 代碼: 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <sys/types.h> 4

Linux編譯安裝XLib庫

問題 fun col bsp source 過程 知識 4.2 span 新裝好的redhat7.3,在安裝qt的時候,有時會出現 Basic XLib functionality test failed!You might need to modify the inclu

Linux 編譯Xerces-c++

linu ida 共享 ++ blank 這樣的 gunzip pad -c 原文地址: http://blog.csdn.net/chenlanmin/article/details/2200064 按照 doc/html 文件夾中的詳細指導編譯 Xerces-C++ 共

Ubuntu Server 16.04.1 LTS 64位編譯運行bitcoin-v0.15.1

core confirm 區別 mon prefix ffi bit ould tco 依賴庫安裝 ? 安裝編譯環境 apt-get -y install build-essential libtool autotools-dev automake autoconf pk

golang Linux編譯環境搭建

可執行文件 ash -s lib 運行 sta 目錄 bin 編譯環境搭建 1、下載golang1.4和1.10源碼(1.4以後的版本都用1.4go編譯安裝,所以先安裝1.4) 2、解壓後我的目錄結構是: /opt/xxx/golang       |-------gopa