Tag Archives: QMAKE_LFLAGS

來源:互聯網
上載者:User

      Qt編程4個多月以來,對於工程檔案的組織一直有著更深入的理解。從起初 的.pro,Makefile,.h,.cpp,.o,.moc,*_ui.h,.so等一股腦的放到工程檔案,到後來有組織的將檔案分門別類的放到各個 項目子目錄下,工程目錄給人感覺越來越顯得更professinal一些了。

      然而對於編譯後的動態庫檔案依賴關係的處理,近期隨著工程代碼的不斷膨脹,依賴庫的不斷增多,變得越來越重要了。此前的做法是,簡單粗暴的把私人依賴的 庫檔案cp到/usr/lib下,然後ldconfig,自己的程式就能跑起來了。但是當目標機上同時也有其他應用程式需要某個特定版本庫的時候,這種做 法會造成嚴重的版本衝突問題。

      因此,專業的做法是,自己的程式依賴庫只放到應用程式特定的目錄下,程式去串連對應目錄的庫檔案運行。那麼,使用Qt編譯Linux下的應用程式該怎麼做呢?

      經過摸索、查看Qt線上說明,並親自實踐,實現起來十分簡單。 在make檔案編寫中,LFLAGS選項可以設定自訂的可執行程式庫檔案尋找路徑。

      那麼在Qt中如何設定呢?如果修改.pro檔案,使用qmake來 自動產生LFLAGS依賴?

      在“qmake Variable Reference”(qmake 變數參考)一節中,正是這個參數:QMAKE_LFLAGS,會修改Makefile的LFLAGS選項。本參數包含了傳遞給連接器的一組通用的標記。如 果要為某個特定平台或者特殊項目修改選項,可以使用某個特殊參數,而可不用本參數。與之對應的還有QMAKE_LFLAGS_CONSOLE(僅適用於 Windows)、QMAKE_LFLAGS_DEBUG(指定Debug版依賴庫路徑)、QMAKE_LFLAGS_RELEASE(指定 Release版依賴庫路徑)…

      使用指定的QMAKE_LFLAGS的好處在於,能夠根據當前編譯的不同配置(例如debug/release)選擇不同路徑下的依賴庫(這些庫也可能 分為debug/release版)。當然,如果所有依賴庫版本都相同,那麼直接修改QMAKE_LFLAGS效果是一樣的。

      那麼,在Qt項目的pro檔案中,增加一行: QMAKE_LFLAGS += -Wl,-rpath=[自訂庫檔案路徑] -Wl,-Bsymbolic 然後執行qmake,make,把/usr/lib下的所有自訂庫刪掉,運行一下自己的程式,發現已經生效了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.