當前位置:首頁 » 編程軟體 » 編譯ccl

編譯ccl

發布時間: 2022-05-25 12:26:11

『壹』 如何直接運行cl.exe進行C++文件編輯編譯

哦,這個要設置環境變數的。
比如你要編譯的文件是 test.c

cl test.c
就直接生成test.exe了,很方便,不用像GUI那裡會生成pch雜七雜八一大堆文件。

環境變數這樣設置

set ROOT=D:\VS2012

set include=%ROOT%\include
set lib=%ROOT%\lib
set PATH=%PATH%;%ROOT%\bin

『貳』 如何編譯生成dll

使用VC下的cl和link手工創建dll並實現函數導入

1、創建dll頭文件:
/*
* dllmain.h
*/
#ifndef _DLLMAIN_H
#define _DLLMAIN_H

int getNumber();

#endif

2、創建dll源文件:
/*
* dllmain.c
*/
#include "dllmain.h"

int getNumber()
{
return 10;
}

3、 創建def文件:
; export.def
LIBRARY MY_DLLMAIN ; MY_DLLMAIN 將成為生成的dll的名稱
EXPORTS
getNumber @1 ; 這個名稱即為函數的實際導出名稱 @1為函數的導出編號

4、生成dll文件:
cl dllmain.c /c
link /def:export.def /dll dllmain.obj

這時,工程中已經包含了 dllmain.h dllmain.c export.def dllmain.obj dllmain.lib dllmain.exp MY_DLLMAIN.dll 其中,後4個文件是編譯鏈接過程中生成的文件

5、創建dlltest.c:
/*
* dlltest.c
*/
#include <stdio.h>
#include "dllmain.h" //dll庫的頭文件

#pragma comment(lib,"dllmain.lib") //dllmain.lib即是上一步生成的文件

int main()
{
printf("%dn",getNumber());
}

6、編譯、鏈接dlltest.c
cl dlltest.c /c
link dlltest.obj

注意:這里dllmain.lib和dllmain.h應該和dlltest.c在同一個目錄中。此步的結果將生成 dlltest.exe

7、運行:
dlltest

這時,系統將載入my_dllmain.dll這個動態鏈接庫,將調用其中的getNubmer函數。

『叄』 linux Makefile問題.S.s: $(CPP) $(CFLAGS) $< -o $*.s什麼意思

請慢慢看,真要詳細講起來,文字實在太多了,但是由於時間原因,我只能以粗略的文字講,語言有一些邏輯漏洞,請見諒。

首先我會以粗略的文字回答你的其中一個問題,然後後面會給出第二個問題的答案。
問:什麼時候會執行這些規則及其相對應的命令?
答:當你給make命令指定了它要生成的終極目標時,它會從要生成的終極目標定址依賴的依賴條件,然後依賴條件一級一級的查找並執行相對應的命令。即如果當有目標需要.s、.o這些依賴條件的時候,會取找要生成.s、.o目標的依賴條件,這個時候就會執行這些規則:
.S.s:
$(CPP) $(CFLAGS) $< -o $*.s
.S.o:
$(CC) $(CFLAGS) -c $< -o $*.o
.c.o:
$(CC) $(CFLAGS) -c $< -o $*.o

一、
源代碼文件必須經過:預處理(cpp)、編譯(ccl)、匯編(as)、鏈接(ld)。這四個階段最終才得到可執行的程序:
makefile里定義了變數CPP=cpp;其中$(CPP)的意思是去定義變數CPP里的值:cpp,用cpp來預處理源文件。
$(CFLAGS)的意思是取定義變數CDLAGS裡面的值,一般是一些自我定義的預處理命令和編譯命令的參數。
$<的意思是:在規則的命令中,表示第一個依賴條件
-o是一個預處理、編譯等執行命令需要的參數
/*
其實這條命令:$(CPP) $(CFLAGS) $< -o $*.s,就是一條預處理命令,將一個源文件預處理為.s文件後綴的文件,*為通配符。那源文件在哪裡呢。其實這條命令.S.s: 已經說了以.S結尾的文件就是源文件。那這條命令.S.s這么說了呢?請看下面的後綴規則講解。
*/

二、
老式風格的"後綴規則"
後綴規則是一個比較老式的定義隱含規則的方法。後綴規則會被模式規則逐步地取代。因為模式規則更強更清晰。為了和老版本的Makefile兼容,GNU make同樣兼容於這些東西。後綴規則有兩種方式:"雙後綴"和"單後綴"。

雙後綴規則定義了一對後綴:目標文件的後綴和依賴目標(源文件)的後綴。如".c.o"相當於"%o : %c"。單後綴規則只定義一個後綴,也就是源文件的後綴。

後綴規則中所定義的後綴應該是make所認識的,如果一個後綴是make所認識的,那麼這個規則就是單後綴規則,而如果兩個連在一起的後綴都被make所認識,那就是雙後綴規則。例如:".c"和".o"都是make所知道。
因而,如果你定義了一個規則是".c.o"那麼其就是雙後綴規則,意義就是".c" 是源文件的後綴,".o"是目標文件的後綴。如下示例:
.c.o:
$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

其中.c.o:這個命令表示源文件的後綴為.c,目標文件的後綴為.o;即也可理解為:生成.o的目標文件依賴條件是源文件.c
下面命令是將是所有的.c源文件都編譯成.o的目標文件。
註:後綴規則不允許任何的依賴文件,如果有依賴文件的話,那就不是後綴規則,那些後綴統統被認為是文件名,
如:
.c.o: foo.h
$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

這個例子,就是說,文件".c.o"依賴於文件"foo.h",而不是我們想要的這樣:

%.o: %.c foo.h
$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
因此後綴規則不允許任何的依賴文件。

『肆』 在虛擬機上安裝了ubuntu,在ubuntu上安裝OpenCV-2.4.0,編譯有問題。

ubuntu並沒包含完整的編譯工具,必須自己先安裝好。個人建議先裝好各種工具。
先裝下這個東西。這個東西是gcc必須的。
sudo apt-get install build-essential

如果不夠請整體復制下列命令,看顯示,缺啥補啥

cat > version-check.sh << "EOF"
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -e /usr/bin/yacc ];
then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
else echo "yacc not found"; fi

bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -e /usr/bin/awk ];
then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
else echo "awk not found"; fi

gcc --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
echo "Texinfo: `makeinfo --version | head -n1`"
xz --version | head -n1

echo 'main(){}' > mmy.c && gcc -o mmy mmy.c
if [ -x mmy ]
then echo "gcc compilation OK";
else echo "gcc compilation failed"; fi
rm -f mmy.c mmy

EOF

bash version-check.sh

『伍』 lisp有什麼比較好用的編譯器么

因為編譯器只是個命令工具沒什麼叫"好用"的...我假設你問的是"編輯器"而不是"編譯器":
首先, 你問的是哪種lisp, 因為lisp有很多種.
如果你需要對所有lisp都好用的編輯器, 估計只有emacs和vim可以滿足你要求. 如果只要最常見的那些lisp, 除了這兩個一般都有些專門為他優化的插件支持的編輯器, 比如 clojure有lighttable和nightcode, racket 有GRacket 等

如果你真的問的是編譯器的話, 請具體說是哪種lisp,因為不同的lisp編譯器是完全不一樣的, 比如common lisp 我是喜歡 ccl (很多人更喜歡sbcl), 比如scheme的話顯然chez是最好得編譯器

『陸』 cmd調用gcc編譯c源碼,並傳參

下面將通過對一個程序的編譯來演示整個過程。

1
2
3
4
5
6
7

#include <stdio.h>

int main()
{
printf("happy new year!\n");
return 0;
}


1:預處理:編譯器將C程序的頭文件編譯進來,還有宏的替換,可以用gcc的參數-E來參看。
命令:gcc -E hello.c -o hello.i
作用:將hello.c預處理輸出hello.i
2:編譯:這個階段編譯器主要做詞法分析、語法分析、語義分析等,在檢查無錯誤後後,把代碼翻譯成匯編語言。可用gcc的參數-S來參看。
編譯器(ccl)將文本文件hello.i 翻譯成文本文件hello.s, 它包含一個匯編語言程序。匯編語言程序中的每條語句都以一種標準的文本格式描述了
一條低級機器語言指令。

『柒』 請問如何用VC++的編譯器編譯C的程序

啟動VC++6.0新建一個Win32 Console Application工程,建好後,新建-文件-C++ source File,在頭部加上
#include <stdio.h>
#include <stdlib.h>
然後就可以編譯C語言寫的了

『捌』 怎樣在VC6中生成匯編文件

VC6.0中,設置如下:project=》setting...=》C/C++


Category選擇ListingFiles


Listingfiletype選擇下拉框

Assembly-OnlyListing僅生成匯編代碼文件(.ASM擴展名);

AssemblyWithMachineCode生成機器代碼和匯編代碼文件(.COD擴展名);AssemblyWithSourceCode生成源代碼和匯編代碼文件(.ASM擴展名);Assembly,MachineCode,andSource生成機器碼、源代碼和匯編代碼文件(.COD擴展名)。


Listingfilename為生成的信息文件的路徑,一般為Debug或Release目錄下,生成的文件名自動取源文件的文件名。


設置好的示例圖:


設置完重新編譯,在工程Debug文件夾下就產生對應的匯編代碼 *.asm

『玖』 為什麼我的linux系統找不到ccl這個編譯器

執行gcc -v命令,如果Linux系統沒有安裝gcc編譯器,會提示Command not found(沒有這個命令),如果系統上安裝了gcc編譯器,這條命令就會顯示出當前安裝的gcc編譯器是哪個版本。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:646
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:937
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:633
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:822
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:732
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1067
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:300
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:161
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:853
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:764