當前位置:首頁 » 編程軟體 » vc的交叉編譯器

vc的交叉編譯器

發布時間: 2022-10-08 05:37:37

❶ 如何搭建交叉編譯環境

交叉編譯環境就是在Windows下的東西拿到linux下編譯運行吧,我個人是在Linux啟動了samba伺服器,然後將文件夾映射到Windows下,在Windows下使用vc 6.0編程序然後到Linux下編譯的。不知道能不能對你有些幫助。

下載的rpm包,可以使用rpm -ivh 包路徑進行安裝

❷ jpeg庫添加問題

libgpeg.lib -- 注意第4個字母拼寫 LIBJPEG.LIB
如果你沒有 LIBJPEG.LIB,你可以從網上下載,可以下編譯好的,也可以下原碼自己編,同時下頭文件。
鏈接,VC++ 編譯器:
CL my_prog.c LIBJPEG.LIB

❸ gcc編譯器究竟怎麼打開我竟然在gcc的安裝文件夾中找不到gcc的打開文件

你先用vim 或者直接用gedit編寫好程序,然後直接輸入命令就可以了,比如你的程序是helloworld.c,那麼你可以輸入命令:
編譯命令:gcc -o helloworld helloworld.c
運行命令./helloworld

希望這樣的回答對你有幫助!

gcc的使用方法

1。gcc包含的c/c++編譯器
gcc,cc,c++,g++,gcc和cc是一樣的,c++和g++是一樣的,一般c程序就用gcc編譯,c++程序就用g++編譯

2。gcc的基本用法
gcc test.c這樣將編譯出一個名為a.out的程序
gcc test.c -o test這樣將編譯出一個名為test的程序,-o參數用來指定生成程序的名字

3。為什麼會出現undefined reference to 'xxxxx'錯誤?
首先這是鏈接錯誤,不是編譯錯誤,也就是說如果只有這個錯誤,說明你的程序源碼本身沒有問題,是你用編譯器編譯時參數用得不對,你沒有指定鏈接程序要用到得庫,比如你的程序里用到了一些數學函數,那麼你就要在編譯參數里指定程序要鏈接數學庫,方法是在編譯命令行里加入-lm。

4。-l參數和-L參數
-l參數就是用來指定程序要鏈接的庫,-l參數緊接著就是庫名,那麼庫名跟真正的庫文件名有什麼關系呢?
就拿數學庫來說,他的庫名是m,他的庫文件名是libm.so,很容易看出,把庫文件名的頭lib和尾.so去掉就是庫名了。

好了現在我們知道怎麼得到庫名了,比如我們自已要用到一個第三方提供的庫名字叫libtest.so,那麼我們只要把libtest.so拷貝到/usr/lib里,編譯時加上-ltest參數,我們就能用上libtest.so庫了(當然要用libtest.so庫里的函數,我們還需要與libtest.so配套的頭文件)。

放在/lib和/usr/lib和/usr/local/lib里的庫直接用-l參數就能鏈接了,但如果庫文件沒放在這三個目錄里,而是放在其他目錄里,這時我們只用-l參數的話,鏈接還是會出錯,出錯信息大概是:"/usr/bin/ld: cannot find -lxxx",也就是鏈接程序ld在那3個目錄里找不到libxxx.so,這時另外一個參數-L就派上用場了,比如常用的X11的庫,它放在/usr/X11R6/lib目錄下,我們編譯時就要用-L/usr/X11R6/lib -lX11參數,-L參數跟著的是庫文件所在的目錄名。再比如我們把libtest.so放在/aaa/bbb/ccc目錄下,那鏈接參數就是-L/aaa/bbb/ccc -ltest

另外,大部分libxxxx.so只是一個鏈接,以RH9為例,比如libm.so它鏈接到/lib/libm.so.x,/lib/libm.so.6又鏈接到/lib/libm-2.3.2.so,如果沒有這樣的鏈接,還是會出錯,因為ld只會找libxxxx.so,所以如果你要用到xxxx庫,而只有libxxxx.so.x或者libxxxx-x.x.x.so,做一個鏈接就可以了ln -s libxxxx-x.x.x.so libxxxx.so

手工來寫鏈接參數總是很麻煩的,還好很多庫開發包提供了生成鏈接參數的程序,名字一般叫xxxx-config,一般放在/usr/bin目錄下,比如gtk1.2的鏈接參數生成程序是gtk-config,執行gtk-config --libs就能得到以下輸出"-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmole -lglib -ldl -lXi -lXext -lX11 -lm",這就是編譯一個gtk1.2程序所需的gtk鏈接參數,xxx-config除了--libs參數外還有一個參數是--cflags用來生成頭文
件包含目錄的,也就是-I參數,在下面我們將會講到。你可以試試執行gtk-config --libs --cflags,看看輸出結果。
現在的問題就是怎樣用這些輸出結果了,最苯的方法就是復制粘貼或者照抄,聰明的辦法是在編譯命令行里加入這個`xxxx-config --libs --cflags`,比如編譯一個gtk程序:gcc gtktest.c `gtk-config --libs --cflags`這樣就差
不多了。注意`不是單引號,而是1鍵左邊那個鍵。

除了xxx-config以外,現在新的開發包一般都用pkg-config來生成鏈接參數,使用方法跟xxx-config類似,但xxx-config是針對特定的開發包,但pkg-config包含很多開發包的鏈接參數的生成,用pkg-config --list-all命令可以列出所支持的所有開發包,pkg-config的用法就是pkg-config pagName --libs --cflags,其中pagName是包名,是pkg-config--list-all里列出名單中的一個,比如gtk1.2的名字就是gtk+,pkg-config gtk+ --libs --cflags的作用跟gtk-config --libs --cflags是一樣的。比如:gcc gtktest.c `pkg-config gtk+ --libs --cflags`。

5。-include和-I參數
-include用來包含頭文件,但一般情況下包含頭文件都在源碼里用#include xxxxxx實現,-include參數很少用。-I參數是用來指定頭文件目錄,/usr/include目錄一般是不用指定的,gcc知道去那裡找,但是如果頭文件不在/usr/include里我們就要用-I參數指定了,比如頭文件放在/myinclude目錄里,那編譯命令行就要加上-I/myinclude參數了,如果不加你會得到一個"xxxx.h: No such file or directory"的錯誤。-I參數可以用相對路徑,比如頭文件在當前目錄,可以用-I.來指定。上面我們提到的--cflags參數就是用來生成-I參數的。

6。-O參數
這是一個程序優化參數,一般用-O2就是,用來優化程序用的,比如gcc test.c -O2,優化得到的程序比沒優化的要小,執行速度可能也有所提高(我沒有測試過)。

7。-shared參數
編譯動態庫時要用到,比如gcc -shared test.c -o libtest.so

8。幾個相關的環境變數
PKG_CONFIG_PATH:用來指定pkg-config用到的pc文件的路徑,默認是/usr/lib/pkgconfig,pc文件是文本文件,擴展名是.pc,裡面定義開發包的安裝路徑,Libs參數和Cflags參數等等。
CC:用來指定c編譯器。
CXX:用來指定cxx編譯器。
LIBS:跟上面的--libs作用差不多。
CFLAGS:跟上面的--cflags作用差不多。
CC,CXX,LIBS,CFLAGS手動編譯時一般用不上,在做configure時有時用到,一般情況下不用管。
環境變數設定方法:export ENV_NAME=xxxxxxxxxxxxxxxxx

9。關於交叉編譯
交叉編譯通俗地講就是在一種平台上編譯出能運行在體系結構不同的另一種平台上,比如在我們地PC平台(X86 CPU)上編譯出能運行在sparc CPU平台上的程序,編譯得到的程序在X86 CPU平台上是不能運行的,必須放到sparc CPU平台上才能運行。
當然兩個平台用的都是linux。

這種方法在異平台移植和嵌入式開發時用得非常普遍。

相對與交叉編譯,我們平常做的編譯就叫本地編譯,也就是在當前平台編譯,編譯得到的程序也是在本地執行。

用來編譯這種程序的編譯器就叫交叉編譯器,相對來說,用來做本地編譯的就叫本地編譯器,一般用的都是gcc,但這種gcc跟本地的gcc編譯器是不一樣的,需要在編譯gcc時用特定的configure參數才能得到支持交叉編譯的gcc。

為了不跟本地編譯器混淆,交叉編譯器的名字一般都有前綴,比如sparc-xxxx-linux-gnu-gcc,sparc-xxxx-linux-gnu-g++ 等等

10。交叉編譯器的使用方法
使用方法跟本地的gcc差不多,但有一點特殊的是:必須用-L和-I參數指定編譯器用sparc系統的庫和頭文件,不能用本地(X86)
的庫(頭文件有時可以用本地的)。
例子:
sparc-xxxx-linux-gnu-gcc test.c -L/path/to/sparcLib -I/path/to/sparcInclude

❹ c++編譯器哪個好vc,vs,dec,gcc,codeblock等

VS2010最好。

VS 2010:
微軟官方中文版

專業版
http://www.microsoft.com/downloads/details.aspx?familyid=5414E4C0-C1F8-473E-8E9D-A1A7BE786141&displaylang=zh-cn
旗艦版
http://www.microsoft.com/downloads/details.aspx?familyid=06A32B1C-80E9-41DF-BA0C-79D56CB823F7&displaylang=zh-cn

變試用版為正式版
Xp下:
安裝完成後,在「控制面板」中啟動「添加刪除程序」,選中Vs2008,點擊「更改、刪除」,
輸入序列號
YCFHQ-9DWCY-DKV88-T2TMH-G7BHP
就成了正式版

Visita,Win7下
把iso文件解壓縮,setup文件夾中的setup.sdb
以記事本打開setup.sdb文件,並找到:
[Proct Key]
YR3W8FCM2B7BKF9HMQFTCH7WK
並將key替換成:
YCFHQ9DWCYDKV88T2TMHG7BHP

❺ Android NDK開發簡介 NDK和SDK以及JNI有什麼關系

NDK:Android NDK 是在SDK前面又加上了「原生」二字,即Native Development Kit,因此又被Google稱為「NDK」。
NDK全稱:Native Development Kit。
NDK是一系列工具的集合。
* NDK提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so和java應用一起打包成apk。這些工具對開發者的幫助是巨大的。
* NDK集成了交叉編譯器,並提供了相應的mk文件隔離CPU、平台、ABI等差異,開發人員只需要簡單修改mk文件(指出「哪些文件需要編譯」、「編譯特性要求」等),就可以創建出so。
* NDK可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。
其實:
NDK就是能夠方便快捷開發.so文件的工具。JNI的過程比較復雜,生成.so需要大量操作,而NDK就是簡化了這個過程。

Android SDK:
SDK (software development kit)軟體開發工具包。被軟體開發工程師用於為特定的軟體包、軟體框架、硬體平台、操作系統等建立應用軟體的開發工具的集合。因此!Android SDk 指的既是Android專屬的軟體開發工具包

JNI:
Java Native Interface (JNI)標準是java平台的一部分,它允許Java代碼和其他語言寫的代碼進行交互。JNI 是本地編程介面,它使得在 Java 虛擬機 (VM) 內部運行的 Java 代碼能夠與用其它編程語言(如 C、C++ 和匯編語言)編寫的應用程序和庫進行交互操作
當然一般需要進行如下操作流程:
1) 編寫java程序:這里以HelloWorld為例。為了實現在 java代碼中調用c函數printf。
代碼1:
class HelloWorld {
public native void testHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().testHelloWorld();
}
}
聲明native方法:如果你想將一個方法做為一個本地方法的話,那麼你就必須聲明改方法為native的,並且不能實現。
Load動態庫:System.loadLibrary("hello");
這里一般是以static塊進行載入的。同時需要注意的是System.loadLibrary()的參數「hello」是動態庫的名字。
2) 編譯
javac HelloWorld.java
3) 生成擴展名為h的頭文件 javah ?
JNIEXPORT void JNICALL Java_HelloWorld_testHelloWorld (JNIEnv *, jobject);

這個h文件相當於我們在java裡面的介面,這里聲明了一個 Java_HelloWorld_testHelloWorld (JNIEnv *, jobject)方法,然後在我們 的本地方法裡面實現這個方法,也就是說我們在編寫C/C++程序的時候所使用的方法名必須和這里的一致)。
4) 編寫本地方法實現和由javah命令生成的頭文件裡面聲明的方法名相同的方法

代碼2:
#include "jni.h"
#include "HelloWorld.h"
#include other headers

JNIEXPORT void JNICALL Java_HelloWorld_testHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!/n");
return;
}
注意代碼2中的第1行,需要將jni.h(該文件可以在%JAVA_HOME%/include文件夾下面找到)文件引入,因為在程序中的JNIEnv、 jobject等類型都是在該頭文件中定義的;另外在第2行需要將HelloWorld.h頭文件引入。然後保存為 HelloWorldImpl.c就ok了。
5) 生成動態庫
這里以在Windows中為例,需要生成dll文件。在保存HelloWorldImpl.c文件夾下面,使用VC的編譯器cl成。 cl -I%java_home%/include -I%java_home%/include/win32 -LD HelloWorldImp.c -Fehello.dll 注意:生成的dll文件名在選項-Fe後面配置,這里是hello,因為在HelloWorld.java文件中我們loadLibary的時候使用的名字是hello。
另外需要將-I%java_home%/include -I%java_home%/include/win32參數加上,因為在第四步裡面編寫本地方法的時候引入了jni.h文件。

❻ 開發工具,模擬器,燒錄器,編譯器,交叉編譯器到底是什麼關系

房東太多的此長啊,不拉。
開發工具,模擬器,燃燒器,編譯器:開發工具模擬器,燃燒器和編譯器。模擬器只能燒一些簡單的IC,少數還行。燃燒器的程序員更強大的通配符量單一類型的刻錄機其實很簡單,就是你編譯程序寫入片內Flash內的介質燃燒器改造,我從事燒傷,我為自己代言

❼ 我現在安裝的有VC++6.0和VS2008,操作系統為32位。想問一下怎麼才能開發64位的應用程序

設置64位創建環境變數, 用下面任何一種方式都行:
方式一:
點擊」開始」菜單, 指向 「Microsoft Platform SDK」 > 「Open Build Environment Windows」 > 「Set Windows XP 64 Build Environment」, 然後點擊」Set Windows XP 64 Build Environment (Debug)」, 這時, 一個控制台窗口將顯示, 一行文本顯示像」 the build environment set for a 64-bit」.
方式二:
在命令提示符下,
1. 點擊」開始」菜單, 然後點擊」運行」

2. 鍵入」command.exe」(沒有引號), 然後, 點擊」確定」

3. 變化當前目錄到C:\Program Files\Microsoft SDK(你的SDK安裝目錄), 然後鍵入」SetEnv.bat /XP64」(沒有引號)
現在, 開始啟動Visual C++ 6.0並用我們剛才配置好的創建環境
1. 在同一個命令窗口中(也就是你剛才設置64位環境的命令行窗口), 打開Visual Studio.

2. 鍵入 「Msdev /useenv」(沒有引號). 請注意, 不要打開一個新的命令行窗口, 再去打開Msdev.exe, 現在Visual C++ 6.0 IDE已經顯示, 並且include, library及executable目錄均被設置為64位的創建環境(注:查看這些配置, 點擊Tools > Options > Directories, 在」Show directories for: 「下拉列表中查看相應目錄配置).
另外, 如果Msdev.exe不在當前路徑下(通常是系統環境變數沒有相應指示), 變化目錄到你所安裝Visual Studio的目錄下, 例如: \Microsoft Visual Studio\Common\Msdev98\Bin, 然後, 再鍵入Msdev.exe.
譯注: 在前面的設置64位創建環境變數 , 已經將IDE的executable執行目錄調整到SDK的相應目錄下面, 也就是說, 作為可執行程序: 編譯器和鏈接器是在SDK目錄中, 而不再是默認的\Microsoft Visual Studio\Common\Msdev98\Bin
添加一個64位Debug配置
1. 在Visual C++ IDE中, 打開一個已經在的32位工程(例如: MyApplication)

2. 在」Build」菜單上, 點擊」Configurations」.

3. 在」Configurations」對話框上, 點擊」Add」.

4. 在」Add Project Configuration」對話框上, 設置」Configuration」到Debug64, 然後, 在」Copy Settings from」列表框中點擊」MyApplication – Win32 Debug」

5. 點擊」OK」完成設置, 點擊」Close」關閉.
設置激活配置為64位
1. 在」Build」菜單上, 點擊」Set Active Configuration」.

2. 點擊」MyApplication – Win32 Debug64」, 然後, 點擊」OK」.
修改編譯器和鏈接器的參數配置
由於64位的編譯器和鏈接器的參數配置和32位的有些不一樣, 我們需要修改部分選項, 下面是這些配置步驟:
1. 在」Project」菜單中,點擊」Settings」.

2. 在」Project Settings」對話框中, 點擊」General」標簽. 在」Output directories」, 在」Intermediate files」 和」Output files」輸入框中, 鍵入」Debug64」(沒有引號)

3. 在」C/C++」標簽上, 在」Debug info」下拉列表中, 選擇」Program database(參數選項對應是 /Zi)

4. 在」Link」標簽上, 在」Project options」的輸入框中, 變化」/machine:I386」(沒有引號)到」/machine:IA64」(沒有引號)

譯注: 正確設置應是: /machine:AMD64

5. 在」View」菜單上, 點擊」Workspace」.

6. 然後, 移除幫助文件MyApplication.hpj

7. 如果你的應用程序是基於MFC的, 你必須添加一個MFC路徑以避免鏈接錯誤:LNK1004 on the Mfc42d.lib, 請按下面步驟操作:
a. 在」Tools」菜單上, 點擊」Options」.

b. 在」Directories」標簽上, 在」Show directories」下拉列表中, 選擇」Library Files」, 現在添加你的平台庫所在路徑: 」\Microsoft SDK\lib\IA64\mfc」(沒有引號)

譯注補充: 在」C/C++」標簽上, 在」Preprocessor definitions」輸入框中將WIN32改成WIN64
創建並調試這個工程
現在Build這個工程, 生成64位應用程序, 這個應用程序被部署在一個IA64計算機上.
要在Visual C++ 6.0中運行這個.exe文件, 按下面步驟:
注意: 你不能夠在Visual C++ 6.0 IDE中調試這個.exe文件.
a. 在你的IA64計算機上, 創建一個文件夾: C:\VC6MSVCMON
從X86(32位)計算機上拷貝這些文件到這個新創建的文件夾中:

Msvcmon.exe
Dm.dll
Msdis110.dll
Tln0t.dll

上面這些文件應在你的Visual C++ 6.0安裝目錄下:
\Visual Studio\Common\MSDev98\Bin

b. 在拷貝完這些文件後, 在IA64計算機上運行Msvcmon.exe, 然後, 點擊」Connect」.

c. 在X86(32位)計算機上, 打開Visual C++ 6.0 IDE, 在」Build」菜單上, 點擊」Debugger Remote Connection」.

d. 在」Remote Connection」對話框中, 點擊」Network TCP/IP」, 然後, 點擊」Settings」.

e. 在」Target computer name of address」輸入框中, 鍵入IA64計算機的名稱. 點擊」ok」兩次, 關閉對話框.

f. 在Visual Studio C++ IDE中, 在」Project」菜單上, 點擊」Settings」, 在左側面板, 展開」MyApplication」, 然後, 點擊」Debug」標簽. 你將注意到」Executable for debug session」輸入框包含了MyApplication.exe的路徑, 看起來是C:\<X86Path>\MyApplication.exe.

g. 在」Remote executable path and file name」輸入框中, 鍵入」MyApplication.exe」(沒有雙引號)所在的全路徑, 這個路徑看起來像: \\<X86ComputerName>\C$\<x86Path>\MyApplication.exe(沒有引號).點擊」OK」關閉該窗口.

h. 按下CTRL+F5或在」Build」菜單上點擊」Execute MyApplication.exe」, 開始運行這個.exe文件, 這個.exe文件現在是運行在IA64計算機上.
注意:如果MyApplication是一個MFC應用程序並且這個工程用到了MFC相關的.dll文件, 請確信在IA64計算機上, 那些.dll文件從\Microsoft SDK\NoRedist\Win64文件夾中已被拷貝到\System32文件夾中.
譯注:\Microsoft SDK\NoRedist\Win64存放的是debug和release版本的MFC, ATL相關dll(64位), 實際上你也可以拷貝這些dll文件到你的可執行.exe文件所在同一目錄中.
這些dll文件是:

Mfc42d.dll
Mfco42d.dll
Msvcrtd.dll

譯注補充: 編譯/鏈接中經常遇到的問題:
鏈接出錯, 通常是RTC, cookie錯誤, 參見下面鏈接設置:
http://support.microsoft.com/?scid=kb%3Ben-us%3B894573&x=15&y=14
鏈接中如出現 Error Spawing bscmake.exe
去掉勾選編譯參數(Project settings > c/c++): Generate Browse Info
如果仍不成功, 請仔細檢查在菜單項」Tools」 > 「Options」 , 定位在」Directories」標簽, 選擇」Executable Files」, 在下面的目錄列表中, 將<SDK安裝目錄>\bin路徑放在第一項.(這個目錄中的64位編譯器和鏈接器程序將重載舊的32位設置).
如果你是動態庫和主應用程序鏈接, 必須保持用的是相同運行時庫, 例如: 全部都是Multi-Threads DLL(點擊」Project」 > 「Settings」, 選擇」C/C++」標簽, 在」Category」下拉列表中選擇」Code Generation」, 在下面」Use runtime library」下拉列表中選擇).
用Visual C++ .NET IDE創建一個64位應用程序
警告: 在已安裝Visual Studio .NET的計算機上, 請不要同時安裝64位版本的WinDbg調試器工具, 請讀平台SDK的Readme.doc(位置在: C:\Program Files\Microsoft SDK\Bin\Win64\Readme.doc).
設置64位創建環境變數, 用下面任何一種方式都行:
參照前文相同部分.
開始啟動Visual C++ .NET, 並用剛才我們創建好的64位環境
1. 在64位SDK環境設置的命令行窗口中,打開Visual Studio .NET.

2. 鍵入」devenv /useenv」(沒有引號), 然後, 點擊」OK」. 現在include, library, executable目錄被設置成為64位SDK所在目錄.

注意: 如果Devent.exe不在當前路徑(通常是在系統環境變數Path中未指定Visual Studio .NET安裝目錄), 請改變文件夾路徑到<Visual Studio .NET安裝目錄>\Microsoft Visual Studio .NET\Common7\IDE, 然後再運行上述命令.
警告:在你運行這個命令後, Visual Studio .NET IDE就被設置成為64位的開發環境, 如果你想清除這個環境, 在打開一個新的Visual Studio .NET IDE之前, 刪除在C:\Documents and Settings\<Username>\Local Settings\Application Data\Microsoft\VisualStudio\7.0 下的Vccomponents.dat文件.
添加一個64位調試配置
1. 打開一個已存在的32位工程(例如, MyApplication).

2. 在」Build」菜單上, 點擊」Configuration Manager」.

3. 在」Active Solution Configurations」列表中, 點擊」New」.

4. 在」New Solution Configurations」對話框中, 在」Solution Configuration Name」下面選擇」Debug64」(不包含引號), 並且在」Copy Settings From」下面選擇」Debug」.

5. 點擊」OK」.

6. 在」Configuration Manager」對話框中, 在」Active Solution Configuration」列表中, 點擊選擇」Debug64」, 然後點擊」OK」.

修改編譯器和鏈接器設置
由於64位的編譯器和鏈接器的參數配置和32位的有些不一樣, 我們需要修改部分選項, 下面是這些配置步驟:

1. 在」Solution」(中文:解決方案)瀏覽窗口中, 右鍵」Project」, 然後, 點擊」Properties」.

2. 在」C/C++」節點, 選擇」General」. 設置」Debug Information Format」到」Program Database」(對應的編譯選項是/Zi).

3. 在」C/C++」節點中, 選擇」Code generation」. 設置」Buffer Security Check」到」No」(對應的編譯選項是/GS).

4. 在」Linker」節點, 選擇」Command Line」.在」Additional Options」下面, 添加」/MACHINE:IA64」(沒有引號).

5. 如果你的應用程序是基於MFC的,你必須添加MFC路徑以避免收到鏈接錯誤:LNK1104 on the Mfc42d.lib file.
添加MFC路徑, 按下面步驟:
a. 在」Tools」菜單上, 點擊」Options」.

b. 在」Projects」下面, 選擇」VC++ Directories」. 在」Show directories」列表中, 選擇」Library Files」.如果庫路徑沒有列出, 添加這個庫路徑"\Microsoft SDK\lib\IA64\mfc"(沒有引號).
注意:如果MyApplication是一個MFC應用程序並且這個工程用到了MFC相關的.dll文件, 請確信在IA64計算機上, 那些.dll文件從\Microsoft SDK\NoRedist\Win64文件夾中已被拷貝到\System32文件夾中.
這些dll文件是:
Mfc42d.dll
Mfco42d.dll
Msvcrtd.dll
完成這些後, 就可以build 64位可執行程序了.
調試工程參照Visual C++ 6.0 IDE部分.
更多參考在:
64-Bit Programming with Visual C++

64位程序移植問題設置64位創建環境變數, 用下面任何一種方式都行:
方式一:
點擊」開始」菜單, 指向 「Microsoft Platform SDK」 > 「Open Build Environment Windows」 > 「Set Windows XP 64 Build Environment」, 然後點擊」Set Windows XP 64 Build Environment (Debug)」, 這時, 一個控制台窗口將顯示, 一行文本顯示像」 the build environment set for a 64-bit」.
方式二:
在命令提示符下,
1. 點擊」開始」菜單, 然後點擊」運行」

2. 鍵入」command.exe」(沒有引號), 然後, 點擊」確定」

3. 變化當前目錄到C:\Program Files\Microsoft SDK(你的SDK安裝目錄), 然後鍵入」SetEnv.bat /XP64」(沒有引號)
現在, 開始啟動Visual C++ 6.0並用我們剛才配置好的創建環境
1. 在同一個命令窗口中(也就是你剛才設置64位環境的命令行窗口), 打開Visual Studio.

2. 鍵入 「Msdev /useenv」(沒有引號). 請注意, 不要打開一個新的命令行窗口, 再去打開Msdev.exe, 現在Visual C++ 6.0 IDE已經顯示, 並且include, library及executable目錄均被設置為64位的創建環境(注:查看這些配置, 點擊Tools > Options > Directories, 在」Show directories for: 「下拉列表中查看相應目錄配置).
另外, 如果Msdev.exe不在當前路徑下(通常是系統環境變數沒有相應指示), 變化目錄到你所安裝Visual Studio的目錄下, 例如: \Microsoft Visual Studio\Common\Msdev98\Bin, 然後, 再鍵入Msdev.exe.
譯注: 在前面的設置64位創建環境變數 , 已經將IDE的executable執行目錄調整到SDK的相應目錄下面, 也就是說, 作為可執行程序: 編譯器和鏈接器是在SDK目錄中, 而不再是默認的\Microsoft Visual Studio\Common\Msdev98\Bin
添加一個64位Debug配置
1. 在Visual C++ IDE中, 打開一個已經在的32位工程(例如: MyApplication)

2. 在」Build」菜單上, 點擊」Configurations」.

3. 在」Configurations」對話框上, 點擊」Add」.

4. 在」Add Project Configuration」對話框上, 設置」Configuration」到Debug64, 然後, 在」Copy Settings from」列表框中點擊」MyApplication – Win32 Debug」

5. 點擊」OK」完成設置, 點擊」Close」關閉.
設置激活配置為64位
1. 在」Build」菜單上, 點擊」Set Active Configuration」.

2. 點擊」MyApplication – Win32 Debug64」, 然後, 點擊」OK」.
修改編譯器和鏈接器的參數配置
由於64位的編譯器和鏈接器的參數配置和32位的有些不一樣, 我們需要修改部分選項, 下面是這些配置步驟:
1. 在」Project」菜單中,點擊」Settings」.

2. 在」Project Settings」對話框中, 點擊」General」標簽. 在」Output directories」, 在」Intermediate files」 和」Output files」輸入框中, 鍵入」Debug64」(沒有引號)

3. 在」C/C++」標簽上, 在」Debug info」下拉列表中, 選擇」Program database(參數選項對應是 /Zi)

4. 在」Link」標簽上, 在」Project options」的輸入框中, 變化」/machine:I386」(沒有引號)到」/machine:IA64」(沒有引號)

譯注: 正確設置應是: /machine:AMD64

5. 在」View」菜單上, 點擊」Workspace」.

6. 然後, 移除幫助文件MyApplication.hpj

7. 如果你的應用程序是基於MFC的, 你必須添加一個MFC路徑以避免鏈接錯誤:LNK1004 on the Mfc42d.lib, 請按下面步驟操作:
a. 在」Tools」菜單上, 點擊」Options」.

b. 在」Directories」標簽上, 在」Show directories」下拉列表中, 選擇」Library Files」, 現在添加你的平台庫所在路徑: 」\Microsoft SDK\lib\IA64\mfc」(沒有引號)

譯注補充: 在」C/C++」標簽上, 在」Preprocessor definitions」輸入框中將WIN32改成WIN64
創建並調試這個工程
現在Build這個工程, 生成64位應用程序, 這個應用程序被部署在一個IA64計算機上.
要在Visual C++ 6.0中運行這個.exe文件, 按下面步驟:
注意: 你不能夠在Visual C++ 6.0 IDE中調試這個.exe文件.
a. 在你的IA64計算機上, 創建一個文件夾: C:\VC6MSVCMON
從X86(32位)計算機上拷貝這些文件到這個新創建的文件夾中:

Msvcmon.exe
Dm.dll
Msdis110.dll
Tln0t.dll

上面這些文件應在你的Visual C++ 6.0安裝目錄下:
\Visual Studio\Common\MSDev98\Bin

b. 在拷貝完這些文件後, 在IA64計算機上運行Msvcmon.exe, 然後, 點擊」Connect」.

c. 在X86(32位)計算機上, 打開Visual C++ 6.0 IDE, 在」Build」菜單上, 點擊」Debugger Remote Connection」.

d. 在」Remote Connection」對話框中, 點擊」Network TCP/IP」, 然後, 點擊」Settings」.

e. 在」Target computer name of address」輸入框中, 鍵入IA64計算機的名稱. 點擊」ok」兩次, 關閉對話框.

f. 在Visual Studio C++ IDE中, 在」Project」菜單上, 點擊」Settings」, 在左側面板, 展開」MyApplication」, 然後, 點擊」Debug」標簽. 你將注意到」Executable for debug session」輸入框包含了MyApplication.exe的路徑, 看起來是C:\<X86Path>\MyApplication.exe.

g. 在」Remote executable path and file name」輸入框中, 鍵入」MyApplication.exe」(沒有雙引號)所在的全路徑, 這個路徑看起來像: \\<X86ComputerName>\C$\<x86Path>\MyApplication.exe(沒有引號).點擊」OK」關閉該窗口.

h. 按下CTRL+F5或在」Build」菜單上點擊」Execute MyApplication.exe」, 開始運行這個.exe文件, 這個.exe文件現在是運行在IA64計算機上.
注意:如果MyApplication是一個MFC應用程序並且這個工程用到了MFC相關的.dll文件, 請確信在IA64計算機上, 那些.dll文件從\Microsoft SDK\NoRedist\Win64文件夾中已被拷貝到\System32文件夾中.
譯注:\Microsoft SDK\NoRedist\Win64存放的是debug和release版本的MFC, ATL相關dll(64位), 實際上你也可以拷貝這些dll文件到你的可執行.exe文件所在同一目錄中.
這些dll文件是:

Mfc42d.dll
Mfco42d.dll
Msvcrtd.dll

譯注補充: 編譯/鏈接中經常遇到的問題:
鏈接出錯, 通常是RTC, cookie錯誤, 參見下面鏈接設置:
http://support.microsoft.com/?scid=kb%3Ben-us%3B894573&x=15&y=14
鏈接中如出現 Error Spawing bscmake.exe
去掉勾選編譯參數(Project settings > c/c++): Generate Browse Info
如果仍不成功, 請仔細檢查在菜單項」Tools」 > 「Options」 , 定位在」Directories」標簽, 選擇」Executable Files」, 在下面的目錄列表中, 將<SDK安裝目錄>\bin路徑放在第一項.(這個目錄中的64位編譯器和鏈接器程序將重載舊的32位設置).
如果你是動態庫和主應用程序鏈接, 必須保持用的是相同運行時庫, 例如: 全部都是Multi-Threads DLL(點擊」Project」 > 「Settings」, 選擇」C/C++」標簽, 在」Category」下拉列表中選擇」Code Generation」, 在下面」Use runtime library」下拉列表中選擇).
用Visual C++ .NET IDE創建一個64位應用程序
警告: 在已安裝Visual Studio .NET的計算機上, 請不要同時安裝64位版本的WinDbg調試器工具, 請讀平台SDK的Readme.doc(位置在: C:\Program Files\Microsoft SDK\Bin\Win64\Readme.doc).
設置64位創建環境變數, 用下面任何一種方式都行:
參照前文相同部分.
開始啟動Visual C++ .NET, 並用剛才我們創建好的64位環境
1. 在64位SDK環境設置的命令行窗口中,打開Visual Studio .NET.

2. 鍵入」devenv /useenv」(沒有引號), 然後, 點擊」OK」. 現在include, library, executable目錄被設置成為64位SDK所在目錄.

注意: 如果Devent.exe不在當前路徑(通常是在系統環境變數Path中未指定Visual Studio .NET安裝目錄), 請改變文件夾路徑到<Visual Studio .NET安裝目錄>\Microsoft Visual Studio .NET\Common7\IDE, 然後再運行上述命令.
警告:在你運行這個命令後, Visual Studio .NET IDE就被設置成為64位的開發環境, 如果你想清除這個環境, 在打開一個新的Visual Studio .NET IDE之前, 刪除在C:\Documents and Settings\<Username>\Local Settings\Application Data\Microsoft\VisualStudio\7.0 下的Vccomponents.dat文件.
添加一個64位調試配置
1. 打開一個已存在的32位工程(例如, MyApplication).

2. 在」Build」菜單上, 點擊」Configuration Manager」.

3. 在」Active Solution Configurations」列表中, 點擊」New」.

4. 在」New Solution Configurations」對話框中, 在」Solution Configuration Name」下面選擇」Debug64」(不包含引號), 並且在」Copy Settings From」下面選擇」Debug」.

5. 點擊」OK」.

6. 在」Configuration Manager」對話框中, 在」Active Solution Configuration」列表中, 點擊選擇」Debug64」, 然後點擊」OK」.

修改編譯器和鏈接器設置
由於64位的編譯器和鏈接器的參數配置和32位的有些不一樣, 我們需要修改部分選項, 下面是這些配置步驟:

1. 在」Solution」(中文:解決方案)瀏覽窗口中, 右鍵」Project」, 然後, 點擊」Properties」.

2. 在」C/C++」節點, 選擇」General」. 設置」Debug Information Format」到」Program Database」(對應的編譯選項是/Zi).

3. 在」C/C++」節點中, 選擇」Code generation」. 設置」Buffer Security Check」到」No」(對應的編譯選項是/GS).

4. 在」Linker」節點, 選擇」Command Line」.在」Additional Options」下面, 添加」/MACHINE:IA64」(沒有引號).

5. 如果你的應用程序是基於MFC的,你必須添加MFC路徑以避免收到鏈接錯誤:LNK1104 on the Mfc42d.lib file.
添加MFC路徑, 按下面步驟:
a. 在」Tools」菜單上, 點擊」Options」.

b. 在」Projects」下面, 選擇」VC++ Directories」. 在」Show directories」列表中, 選擇」Library Files」.如果庫路徑沒有列出, 添加這個庫路徑"\Microsoft SDK\lib\IA64\mfc"(沒有引號).
注意:如果MyApplication是一個MFC應用程序並且這個工程用到了MFC相關的.dll文件, 請確信在IA64計算機上, 那些.dll文件從\Microsoft SDK\NoRedist\Win64文件夾中已被拷貝到\System32文件夾中.
這些dll文件是:
Mfc42d.dll
Mfco42d.dll
Msvcrtd.dll
完成這些後, 就可以build 64位可執行程序了.
調試工程參照Visual C++ 6.0 IDE部分.
更多參考在:
64-Bit Programming with Visual C++

64位程序移植問題

❽ 在Linux中編寫的UDP一端的程序,用交叉編譯的方式在2440中運行,要求在VC中編寫UDP另一端的程序,二者實現

埠是否能順利對接,是否符合兼容平台!

❾ 綜合來說,幾大主流C++編譯器(icc,gcc,clang,vc++等)究竟孰優孰劣

我曾編出各種C++ 11編譯器的支持,並有C++ 14編譯器支持一批。


實際使用

對VC編譯的速度不斷提高,內存佔用已經從VC12開始明顯提高,而最明顯的是可變參數模板。還有內置的代碼靜態分析,在實際中很有用。32位保護模式下,ss寄存器存的是一個段選擇子,選擇子是一個數字,通過IDT(局部描述符表)或者GDT(全局描述符表)選擇一個段描述符,描述符裡面的信息包含該段的取值范圍和大小。

vc14的靜態分析不在每次載入一個ie(對,以前每分析一個.cpp,就載入一次ie!),速度快了相當多。



熱點內容
監控腳本實用 發布:2022-11-30 14:14:28 瀏覽:376
九陰真經顯血腳本 發布:2022-11-30 14:14:22 瀏覽:195
浪潮伺服器mgn口地址 發布:2022-11-30 14:13:41 瀏覽:818
linux鎖屏設置 發布:2022-11-30 14:08:20 瀏覽:894
演算法轉讓 發布:2022-11-30 14:07:24 瀏覽:22
我的世界為什麼從伺服器斷開連接 發布:2022-11-30 14:07:04 瀏覽:427
怎麼擠出母乳存儲袋中的空氣 發布:2022-11-30 14:05:32 瀏覽:31
linuxbin文件 發布:2022-11-30 14:01:19 瀏覽:479
購物網站源碼php 發布:2022-11-30 13:58:15 瀏覽:472
python執行java 發布:2022-11-30 13:56:23 瀏覽:940