導航:首頁 > 源碼編譯 > qt中如何編譯cgi

qt中如何編譯cgi

發布時間:2023-02-15 17:55:13

❶ 怎麼把*.c文件編譯成*.cgi

把cgi.h cgi.c cgi.o libcgi.a拷到當前目錄 用g++重新把cgi.c cgi.h編譯成鏈接庫,即編譯成cgi.o文件覆蓋原來的以後用g++編譯CheckIn.c時鏈接當前目錄下的cgi庫

❷ 用qt怎麼編譯一個c程序

qt幾?用gcc編譯。不過要用qt的工具先生成Makefile文件。一般是qt里自帶的qmake工具。首先先寫好cpp和頭文件,在當前目錄下依次執行qmake -project,qmake,make即可編譯。

❸ QT中怎麼靜態編譯,靜態編譯的步驟是什麼。

Qt採用編譯的方式安裝的時候,配置中默認的編譯方式是動態編譯的,但是有時候你編寫的程序要發布出去,帶很多動態庫文件是很繁瑣的,此時就需要靜態編譯你的程序,Qt要實現靜態編譯必須庫文件也是靜態編譯的,所以在此介紹一下qt如何來進行靜態編譯第一步:下載源碼包Qt/X11版本:qt-x11-opensource-src-4.5.2.tar.gz第二步:解壓縮tarzxvfqt-x11-opensource-src-4.5.2.tar.gz第三步:進入到剛才解壓縮後的文件夾下並進行配置,如下./configure-release-platformwin32-msvc2008-static-nomakeexamples-nomakedemos-no-qt3support-no-scrip
...
by
fengyetang
2010-07-04
回復
(0)

❹ 請教,如何在arch下建立qt編譯環境的問題

一、安裝G++環境
sudo apt-get install build-essential
另外的一些相關環境。如果不安裝,一些qt的組件是無法正常編譯的,例如openGL
sudo apt-get install libx11-dev libxau-dev libxaw7-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev
sudo apt-get install libxext-dev libxfixes-dev libxfont-dev libxft-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev
sudo apt-get install libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev
sudo apt-get install libglib2.0-dev
sudo apt-get install libssl-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libcups2-dev
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
sudo apt-get install libgstreamer0.10-dev
二、解壓代碼
tar zxvf qt-everywhere-opensource-src-4.8.4.tar.gz
解壓完進入解壓後的源代碼文件夾
三、執行。/configure生成makefile
。/configure -prefix /usr/local/Qt-4.8.2
(上面指定的這個目錄/usr/local/Qt-4.8.2 ,就是make install 後的安裝目錄)
下面出現對話框選擇open source edition.這是自由版。輸入yes接受協議。
(1)如果你的機器各種庫文件完整,經過一小會,配置完成,會出現以下信息
Qt is now configured for building ,just run 『make』
Once everything is built , you must run 『make install』
Qt will be installed into /usr/local/Qt-4.8.2
To reconfigure ,run 『make confclean』 and 『configure』
說明Makefile文件生成成功
(2)如果出現以下信息
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/gcgily/qt-everywhere-opensource-src-4.8.4/mkspecs/linux-g++
還是老辦法,以不變應萬變。進config.test/x11/xlib 執行make命令,看出錯信息
g++ -Wl,-O1 -o xlib xlib.o -L/usr/X11R6/lib -lXext -lX11 -lm
/usr/bin/ld: cannot find -lXext
看到了吧,g++在/usr/X11R6/lib下,找不到libXext.so呢。
其原因就在於需要安裝libX11的開發包,在Ubuntu/debian里包名都是libX11-dev
根據以往的經驗,在。/configure前主動裝好下面3個包,基本上就萬事大吉了
sudo apt-get install libX11-dev libXext-dev libXtst-dev
安裝所需到包後再重新。/configure即可生成Makefile文件
如果出現:Project ERROR: Package gstreamer-app-0.10 not found,則執行以下命令
apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev如果出現 : g++: error: unrecognized command line option 『-fuse-ld=gold』
這是Qt的一個bug:https://bugs.webkit.org/show_bug.cgi?id=89312
在裝有gold linker的系統里,編譯腳本會加入-fuse-ld=gold選項,但這個選項gcc是不支持的。解決辦法是移除該選項,找到文件src/3rdparty/webkit/Source/common.pri,屏蔽QMAKE_LFLAGS+=-fuse-ld=gold。
#
QMAKE_LFLAGS+=-fuse-ld=gold
四、編譯QT
執行make命令,需要2個小時。
五、安裝QT
運行sudo make install命令。需要幾分鍾時間,默認安裝到/usr/local/Qt-4.8.2. 運行/usr/local/Qt-4.5.3/bin/designer ,若能啟動QT,說明QT已經安裝好了。
六、設置環境變數
更改用戶環境變數
gedit /home/username/.bashrc
添加:
export QTDIR=/usr/local/Qt-4.8.2
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
更改包括root用戶的環境變數
sudo gedit /etc/profile (此處profile文件要更改一下許可權才能寫入)
添加:
export QTDIR=/usr/local/Qt-4.8.2
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
七、測試環境變數
重啟測試環境變數:
qmake -v
顯示版本信息:
QMake version 2.01a
Using Qt version 4.8.2 in /usr/local/Qt-4.8.2/lib
which qmake
顯示安裝位置信息:
/usr/local/Trolltech/Qt-4.8.2/bin/qmake
環境變數設置成功。
代碼:
如果需要在Qt中引用其他的包以及庫文件,則使用:
INCLUDEPATH += /usr/local/include/
INCLUDEPATH += /usr/local/include/Eigen
INCLUDEPATH += /usr/local/include/boost
INCLUDEPATH += /usr/local/include/CGAL
LIBS += -L/usr/local/lib/ -lgmp
LIBS += -L/usr/local/lib/ -lmpfr
其中LIBS參數中 -l後只能接特定某一個庫文件,且如果該文件為 「libxxx.so「,則-l後只接「xxx」。
上面就是搭建Qt開發環境的方法介紹了,作為一個良好的跨平台開發工具,Qt能夠很好的運行於更大主流系統,擁有豐富的API等。

❺ QT 5.5.0 怎麼設置才能實現靜態編譯

qt默認的編譯方式是動態編譯的,但是有時候編寫的程序要發布出去,帶很多動態庫文件是很繁瑣的,此時就需要靜態編譯程序,qt要實現靜態編譯必須庫文件也是靜態編譯的,可以用這個命令編譯靜態庫:
1.將c:\qt\2010.05\qt\mkspecs\win32-g++\qmake.conf文件中的qmake_lflags
=
-enable-stdcall-fixup
-wl,-enable-auto-import
-wl,-enable-runtime-pseudo-reloc
改為
qmake_lflags
=
-static
-enable-stdcall-fixup
-wl,-enable-auto-import
-wl,-enable-runtime-pseudo-reloc
2.在開始菜單里找到qt
command
prompt並運行,輸入命令:
configure
-static
-debug-and-release
-no-exceptions
-l
"c:\qt\2010.05\qt\include"
-l
"c:\qt\2010.05\qt\lib"
-l指定一下路徑,防止用到vc的頭文

❻ QT如何進行線程編譯

在Qt中使用多線程,目前就我使用過的有兩種,一是子類化QThread,重寫run函數,在run函數里實現自己的代碼,這一部分代碼通常是比較耗時,或者乾脆直接阻塞的。比如一個while循環,設置一個標志,判斷循環結束。
這樣的例子在網上有很多,就不寫了。
這樣寫的話,會有一些東西需要了解。
子類化QThread的方法,只有run函數裡面的內容是執行在子線程里的,其他的部分,比如槽函數什麼的還是在主線程里執行(假設是在主線程開啟的該子線程)。
還有一種方法,是子類化QObject,新建一個線程,然後使用MoveToThread把這個類的對象移到新建的線程中,這種做法使得它所有的槽函數都是執行在新開辟的線程裡面。
如果直接(QObject對象).abc()的話,這個成員函數是在主進程內執行,可能會出現"QObject::killTimer: timers
cannot be stopped from another thread"的運行錯誤。
使用第二種方法的話,貌似會遇到這樣的問題:如果在一個槽函數中把子線程阻塞,其他的槽函數無法接受來自主線程

❼ Win2000下如何配置IIS來運行C語言編譯的CGI

一、NCSA Server
二、CERN httpd
三、Netscape Server
四、IIS
一、設置NCSA Server或Apache Server以使用CGI

NCSA Server的CGI1.1隻允許用下列兩種方式激活用戶伺服器上的腳本:ScriptAlias指令和AddType指令。這兩條指令都放在srm.conf文件中,該文件一般在用戶的伺服器根目錄的conf目錄中。

ScriptAlias指令告訴伺服器該目錄中的所有文件都是腳本或者是伺服器作為CGI文件執行的程序。該方法能保證用戶的CGI程序在特定位置。AddType指令允許用戶告訴伺服器任何具有指定前綴的文件都是可執行文件。如果希望將CGI程序放在伺服器中任何地方的話該指令即很有用。

1、ScriptAlias指令

ScriptAlias指令位於Server Resource Map文件(srm.conf)中,程序內容例如下:

DocumentRoot /usr/local/etc/httpd/htdocs
UserDir public_html
REdirect /HTTPD/ http://www.server.com/
Alias /icons/ /usr/local/etc/httpd/icons/
ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/
DirectoryIndex index.html index.shtml index.cgi
IndexOptions FancyIndexing
AddIcon /icons/movie.gif .mpg .qt
AddIcon /icons/menu.gif
AddIcon /icons/blank.xbm
DefaultIcon /icons/unknown.xbm

IndexIgnore */.??* *~ *# */HEADER* */README*
DefaultType text/plain
AccessFileName .htaccess
srm.conf文件允許用戶根據自己系統需要設置HTTP Server。它允許用戶告訴伺服器用戶的主頁在什麼地方,目錄中的哪個文檔是索引文檔,如果不存在索引文件的話將裝載什麼圖片文件以顯示文件的類型,等等。srm.conf及其他配置文件的說明可查閱http://www.nease.net/tppmsgs/msgs0.htm#34。

2、AddType指令
AddType指令是執行CGI程序的另一種方式,它是在srm.conf文件中加入下列行:

AddType application/x-httpd-cgi.cgi

在自己的系統中設置了該指令後,任何在伺服器控制范圍內的擴展名為.cgi的文件都會被作為CGI程序執行而不是作為文本文件閱讀。這意味著用戶可以在他的個人目錄中創建腳本並能執行它。但是如果腳本寫得不正確,就可能導致對文件系統、口令文件等的不同類型傷害。

AddType指令可以擴展為允許擴展名不是.cgi的程序同樣被執行。大家經常會看見以.pl(Perl腳本的常見擴展名)或.sh(Bourne Shell腳本的常見擴展名)結尾的腳本。如果想支持其他擴展名的程序,只需簡單地將它們加入AddType指令中,如下所示:

AddType application/x-httpd-cgi .cgi .pl .sh

3、訪問配置文件
為了支持CGI程序的執行必須多加入一條指令。在Server Root/conf目錄中是一個名為access.conf的配置文件。該文件允許用戶設置ServerRoot下的哪個目錄能夠訪問的全局限制,甚至允許用戶控制哪些站點可以訪問這些目錄。下面是access.conf文件的一個例子:

<Directory /usr/local/etc/httpd/cgi-bin>
Options INdexes Exec CGI
</Directory>

<Directory /usr/local/etc/httpd/htdocs>
Options Indexes FollowSymLinks
AllowOverride All
<Limit GET>
order allow,deny
allow from all
</Limit>
</Directory>
Exec CGI表示允許執行該目錄中的CGI腳本。Options Indexes FollowSymLinks表示允許索引(顯示某文件夾中的內容)並能夠遵循符號鏈(這就意味著在ServerRoot之外的文件也能被訪問)。AllowOverride指令允許用戶決定哪個指令可以被目錄的.htaccess文件覆蓋。中設置了對該目錄中允許使用GET方式的限制。在HTTPD中,部分指令的選項是GET、POST和PUT(目前PUT尚未實現)。order allow,deny一行告訴伺服器先找allow行再找deny行。下一行則是告訴伺服器允許所有站點訪問該目錄中的頁面。

二、設置CERN HTTP伺服器以使用CGI
CERN HTTP伺服器(也稱為W3C HTTP伺服器)僅需要編輯/etc/httpd.conf文件即可支持在伺服器內使用CGI程序。這個指令類似於NCSA Server使用的指令:

Exec /url-prefix/* /physical-path/*

其中/url-prefix/定義了客戶能看見的路徑,而/physical-path/則是包含腳本的目錄的實際路徑。

三、設置Netscape以使用CGI
首先要啟動管理伺服器。以root身份登錄,並運行/ServerRoot/admserv/start-admin,預設埠為81。然後啟動瀏覽器連接。在Netscape Admin頁面中,單擊Select URL Mapping,從彈出窗口中選擇Map a URL to a Local Directory。然後單擊Select CGI and Server Parsed HTML,從彈出窗口中選擇Activate CGI as a File Type。現在即可單擊Browse Files並選擇欲激活的目錄。選擇完目錄後,單擊I'd Like to Activate CGI as a File Type。在ServerRoot中即會看到Conf目錄中的obj.conf配置文件中已加入了下列行:

NameTrans form="/cgi-bin" fn="pfx2dir" dir="/usr/local/web/cgi-bin" name="cgi"

name=cgi調用了下列行:

<Object name="cgi">
ObjectType fn="force-type" type="magnus-internal/cgi"
Service fn="send-cgi"
</Object>
它告訴伺服器此為一個CGI目錄,其中的所有文件都將用Netscape內部提供的CGI執行。 四、設置IIS以使用CGI

在IIS上運行CGI有十個簡單的步驟:

1)安裝Internet Service Manager。
2)從列表中選擇WWW Servive。
3)選擇Properties/Service Properties命令。
4)單擊Directories標簽。
5)單擊Add按鈕。
6)指定自己的cgi-bin目錄的完整路徑(例如,c:\webfiles\scripts)。
7)使用/scripts作為目錄別名。
8)選中Execute檢查框。
9)單擊OK保存修改。
10)將自己的CGI程序放在c:\webfiles\scripts中並在HTML中作為/scripts/someprogram.exe引用。
在使用IIS時經常出現的問題與設置IIS沒太大關系而是和基本的操作系統功能有很大關系。IIS與底層的操作系統聯系很緊密,即使已經設置為服務,Web伺服器基本上是作為應用程序來運行的,通常只有一個用戶安全環境,Web伺服器能訪問到的與Web伺服器下的CGI程序能訪問到的內容幾乎沒什麼不同(這類似於UNIX環境,在UNIX環境下,很重要的一點就是不要將Web伺服器作為root來運行)。IIS的工作很像一個擴展的文件系統。每個用戶有自己的許可權。CGI程序在執行該程序的訪問者的用戶安全環境中運行。對於未驗證的頁面,這就是預設提供的「無名的」用戶,而對驗證的頁面,安全環境就像用戶位於伺服器控制台前手工運行該程序一樣。使大部分初學者犯錯誤的正是這種額外的安全層次。

IIS管理員最常抱怨的一個錯誤信息是"The Application misbehaved by not returning a complete set of headers"。錯誤消息接下來列出伺服器接收到的頭標--一般是個空的清單。這種討厭的不明確的錯誤有一個直接的原因,不過這個原因與CGI腳本的錯誤操作沒有一點關系。如果因為某種原因某個CGI腳本不能運行,它就不能產生任何頭標。IIS將錯誤的責任推在腳本身上,實際上卻幾乎總是伺服器管理員的錯。CGI腳本需要訪問系統DLLs、系統的臨時目錄以及它們使用的任何其他資源。如果該腳本是按靜態約束進行編譯的,那麼除非所有組件均可用,否則操作系統不會裝載該程序的。如果系統管理員鎖緊了安全級使得腳本不能裝載它的DLLs,那麼腳本就不能運行。當腳本不能運行時,它也就不產生任何頭標了(或者其他的輸入),從而導致出現本段開頭引用的錯誤消息。

如果管理員是在一個安全目錄中運行腳本的(安全目錄即是一個需要單獨用戶驗證才能訪問的目錄),那麼每個可能訪問系統的用戶都必須有下列安全許可權。如果是無名地運行腳本,那麼只有無名用戶需要這些許可權:

.對%systemroot%system(一般為c:\winnt\system)的讀許可權
.對%systemroot%system32(一般為c:\winnt\system32)的讀許可權
.對臨時目錄(一般為c:\temp)的修改許可權
.對Web根的讀許可權
.對CGI目錄的修改許可權
如果在有了這些訪問許可權之後仍然出問題,可以進一步臨時給特殊的用戶帳號Everyone賦予這些目錄的修改許可權。如果問題解決了,就可以認定是少了一個步驟(或一個用戶)。糾正問題然後慢慢回收許可權直至伺服器重新安全。

❽ 請問大家為什麼我用c語言寫的一個cgi程序的.exe 在vc下成功在qt軟體編譯的就不能成功

在程序中增加一點列印信息之類的debug查查看看阿,程序沒有出來我們只能提供虛的建議阿

閱讀全文

與qt中如何編譯cgi相關的資料

熱點內容
隱私與應用加密的圖案密碼 瀏覽:34
陳情令王一博解壓 瀏覽:35
c編譯器使用說明 瀏覽:703
鄭州前端程序員私活有風險嗎 瀏覽:10
小型螺桿機壓縮機 瀏覽:516
成人解壓最好的方法 瀏覽:48
最小製冷壓縮機 瀏覽:488
xampp支持python 瀏覽:367
深圳周立功單片機 瀏覽:60
圓上點與點之間角度演算法 瀏覽:869
怎麼知道微信關聯了哪些app 瀏覽:702
android事件驅動 瀏覽:888
簽約大屏系統源碼 瀏覽:808
安卓系統怎麼轉入平板 瀏覽:429
安卓手機相機怎麼提取文字 瀏覽:219
如何查看伺服器映射的外網地址 瀏覽:985
圖片刺綉演算法 瀏覽:675
阿里雲伺服器沒有實例 瀏覽:605
綿陽有沒有什麼app 瀏覽:849
怎麼用游俠映射伺服器 瀏覽:921