當前位置:首頁 » 操作系統 » linuxqt動態庫

linuxqt動態庫

發布時間: 2023-10-26 00:40:02

1. 為什麼動態編譯Qt庫需要Perl環境

您最初的想法是正確的,x86平台的庫放在電腦上即可。

而通過arm-linux-交叉編譯工具鏈編譯過的庫,是需要放在
開發板的文件系統裡面的,通用的做法一般是放在/lib或者/usr/lib
目錄裡面即可。或者也可放在其他目錄中,但是需要配置一下LD_LIBRARY_PATH
環境變數。例如放在/home/qtlib目錄中,由於這個不是系統默認的動態庫目錄,

需要設置環境變數LD_LIBRARY_PATH,在/etc/profile下面添加:
export LD_LIBRARY_PATH=/home/qtlib:$LD_LIBRARY_PATH

2. 如何用qt在linux中編寫並使用動態鏈接庫

先寫好實現動態鏈接庫的libmy.cpp文件和libmy.h文件,如下:

// libmy.cpp

#include"libmy.h"

#include<iostream>

using namespace std;
MyLib::MyLib()
{
}

MyLib::~MyLib()
{
}

void MyLib::hello()
{
cout << "hello world~!" << endl;
}

// libmy.h文件

#ifndef LIBMY_H
#define LIBMY_H
class MyLib

{
public:
MyLib();
~MyLib();
void hello();
};
#endif /*LIBMY_H*/

然後寫好pro文件,如下:

TEMPLATE = lib
TARGET =DllTest

HEADERS += libmy.h
SOURCES += libmy.cpp

保存關閉,文件名命名為MyDll.pro
在Shell里執行qmake MyDll.pro,在沒有錯誤的情況下,然後執行make ,可以看到生成了幾個後綴名為so的文件,如下圖:

3. 動態庫 是什麼

首先,想要知道動態庫,我們得了解C++/C以及計算機的一些背景知識。
一般而言,在Windows下,*.dll文件就是動態庫文件。用C++/C開發的程序,在發布的時候,會出現兩種情況,第一,整個軟體就只有一個文件,你只要雙擊那個exe文件,就可以運行。第二,除了exe之外,還有dll等文件。在這里,我們假設的文件只有exe文件和dll文件, 不討論什麼圖標之類文件。
只有一個文件的,庫已經嵌到那個exe裡面。而有很多dll文件的程序,庫沒有嵌入到exe裡面。所以,你可以看一下,如果那個exe文件大小非常大,那就說明是靜態鏈接,在開發的時候是使用靜態庫。如果那個exe非常小,那麼一般是使用的動態庫。
那麼問題來了,動態庫與靜態庫相比優勢又是什麼。動態庫節約內存,為什麼這么說呢。假如兩個類型的程序,如果他們都有一個共同使用的dll,那麼在內存裡面,只有一份,而不是兩份。如果是使用了靜態庫,這會有兩份,會有很大的浪費空間。
當然,使用動態庫還有需要注意的地方。比如,有兩個名字一模一樣的動態庫Qtcore4.dll,但是呢,一個dll是用vs2010編譯器生成的,一個是用vs2015編譯器生成的。如果,exe使用的dll弄錯的話,程序結果會不對或者其他奇葩的問題。
以上均是一個大致的講解,細節部分請參考程序員的自我修養這本書!

4. linux下 qt程序源代碼如何編譯運行

仔細看裡面的源代碼,應該有一些文件里有連接到*.lib文件的,這是QT的動態庫文件把QT庫編譯成linux下的*.lib,然後編譯的時候,把lib文件放在同一文件夾,並且編譯命令加上-l *.lib或者放到根目錄下的lib目錄下也可以。這樣試一下。.o文件還需要經過連接才能生成可執行的文件。

5. 如何用Qt調用matlab生成的動態庫

動態庫的生成
1>首先生成目標文件,但是此時要加編譯器選項-fpic和鏈接器選項-shared,

gcc -fpic -c add.c

gcc -fpic -c sub.c

生成中間文件add.o和sub.o

2>其次生成動態庫

gcc -shared –o libtiger.so add.o sub.o

生成動態庫libtiger.so,libtiger.so就是我們生成的目標動態庫。我們以後使用動態庫和main.c程序生成可執行程序

說明:

以上兩部也可以合成一步搞定:

gcc -fpic -shared add.c sub.c -o libtiger.so

2.使用動態鏈接庫

在編譯程序時,使用動態鏈接庫和靜態庫是一致的,使用」-l庫名」的方式,在生成可執行文件的時候會鏈接庫文件。

1>使用命令:

gcc -o main main.c -L ./ -ltiger

2>-L指定動態鏈接庫的路勁,-ldtiger鏈接庫函數tiger。-ltiger是動態庫的調用規則。Linux系統下的動態庫命名方式是lib*.so,而在鏈接時表示位-l*,*是自己命名的庫名。

3>但是程序會提示如下錯誤

error while loading shared libraries: libtiger.so: cannot open shared object file: No such file or direct

這是因為程序運行時沒有找到動態鏈接庫造成的。程序編譯時鏈接動態庫和運行時使用動態鏈接庫的概念是不同的,在運行時,程序鏈接的動態鏈接庫需要在系統目錄下才行。

4>使用以下方法可以解決此問題

a. 在linux下最方便的解決方案是拷貝libtiger.so到絕對目錄 /lib 下(但是,要是超級用戶才可以,因此要使用sudo哦,親)。就可以生成可執行程序了

b.第二種方法是:將動態鏈接庫的目錄放到程序搜索路徑中,可以將庫的路徑加到環境變數LD_LIBRARY_PATH中實現:

export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH

6. libicui18n.so makefile中怎麼鏈接QT的動態庫

一般分為動態庫和靜態庫,方法分別如下: 一. 靜態庫的生成 1. 測試目錄: lib 2. 源碼文件名: mywindow.h, mywindow.cpp 3. 編寫項目文件: mywindow.pro 注意兩點: TEMPLATE = lib CONFIG += staticlib 4. 生成Makefile: qmake mywindow.pro 5. 編譯生成靜態庫libmywindow.a make 二. 靜態庫的使用 1. 測試目錄: test 2. 將mywindow.h與libmywindow.a拷貝至test目錄下 3. 編寫main.cpp, 包含頭文件mywindow.h, 並調用MyWindow類 4. 編寫項目文件: test.pro 注意加上庫路徑與庫文件名: LIBS += -L ./ -lmywindow 5. 生成Makefile: qmake test.pro 6. 編譯: make 7. 運行: ./test 三. 動態庫的生成 動態庫編譯基本和靜態庫類似,需要將上述將要進行編譯的項目文件.pro中下面這行去掉 CONFIG += staticlib 按上述操作編譯完後就可以得到以lib開頭並且.so* 結尾動態庫文件,一般有多個。

熱點內容
易語言靜態編譯後軟體位置 發布:2025-01-23 01:05:38 瀏覽:465
剪力牆壓腳筋大小怎麼配置 發布:2025-01-23 00:50:53 瀏覽:534
騰訊雲cos雲伺服器 發布:2025-01-23 00:46:47 瀏覽:63
如何給安卓平板刷上MIUI系統 發布:2025-01-23 00:45:51 瀏覽:73
2開方演算法 發布:2025-01-23 00:27:21 瀏覽:16
如何看自己steam伺服器 發布:2025-01-23 00:07:21 瀏覽:710
armlinux命令 發布:2025-01-23 00:01:08 瀏覽:137
戰地4亞洲伺服器為什麼被攻擊 發布:2025-01-22 23:45:42 瀏覽:671
javascript反編譯 發布:2025-01-22 23:37:57 瀏覽:432
夏天來了你的巴氏奶存儲對嗎 發布:2025-01-22 23:37:56 瀏覽:206