庫可以編譯是不是說明可以使用
① c語言既可以編譯執行又可以解釋執行嗎 編譯執行怎麼解釋 解釋執行又怎麼解釋
C 語言程序僅可以解釋執行。
解釋程序是將源程序(如BASIC)作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程序。編譯程序是把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,進行翻譯轉換,產生出機器語言的目標程序,然後再讓計算機執行這個目標程序,得到計算結果。
相對於編譯性語言,其優點是可移植性好,只要有解釋器環境,程序就可以在不同的操作系統上運行。
缺點是代碼需要有專門的解釋器,在程序運行時,除要給用戶程序本身分配內存空間外,解釋器也佔用系統資源,所以其運行速度較慢。另外,也很難達到像C、C++那樣操作系統底層操作的目的。
解釋型語言常用於,一是對運行速度要求不高(如一些網頁腳本等)的場合,二是對跨平台(操作系統的兼容性)有要求的場合。
(1)庫可以編譯是不是說明可以使用擴展閱讀
1、Python和Java語言,專門有一個解釋器能夠直接執行Python程序,每個語句都是執行的時候才翻譯。
2、Python代碼在運行前,會先編譯成中間代碼,每個 .py 文件將被換轉成pyc 文件,pyc 就是一種位元組碼文件,它是與平台無關的中間代碼。不管放在 Windows 還是 linux 平台都可以執行,運行時將由虛擬機逐行把位元組碼翻譯成目標代碼。
② 在LInux下編譯的動態庫是不是可以在蘋果上用啊
理論上不太行。。
也許兩個操作系統有些淵源,那最多也是源代碼可以通用,編譯好的庫就不太行了。
③ 用vc可以編譯但不能運行
你的代碼用到了外部的
lib
庫文件,也需要添加進去。
現以添加socket需要的wsock32.lib
庫文件為例,說明添加方法。
VS2005,在下面路徑中,
項目-->
屬性-->
鏈接器-->
輸入
-->附加依賴項
加上
wsock32.lib。
你看一下你的代碼中用到了哪一個庫文件,按照上面的方法加上即可。
④ c語言中的函數可不可以單獨進行編譯
是可以的。
庫函數是把函數放到庫里,供別人使用的一種方式。函數庫是由系統建立的具有一定功能的函數的集合。庫中存放函數的名稱和對應的目標代碼,以及連接過程中所需的重定位信息。用戶也可以根據自己的需要建立自己的用戶函數庫。
使用C語言的語句直接計算sin或cos函數,就需要編寫頗為復雜的程序。因為C語言的語句中沒有提供直接計算sin或cos函數的語句。又如為了顯示一段文字,我們在C語言中也找不到顯示語句,只能使用庫函數printf。
(4)庫可以編譯是不是說明可以使用擴展閱讀
函數庫的分類
1、字元串、內存和字元函數
需要的包含文件:string.h、mem.h、ctype.h或string.h;
2、數學函數
需要的包含文件:math.h;
3、動態存儲分配
需要的包含文件:alloc.h或stdlib.h ;
⑤ 使用c語言操作MYsql資料庫時可以編譯,也可以正常運行,就是顯示表內容之後就有提示段錯誤,求指導~~
段錯誤一般是指針有問題,或者越界之類的
num_row = (int)mysql_num_rows(res);
num_col = (int)mysql_num_fields(res);
for(r=0;r<num_col;r++)
{
row = mysql_fetch_row(res);//檢索一個結果集合的下一行
for(c=0;c<num_col;c++)
printf("%s ",row[c]);
printf("\n");
}
這段代碼很可疑啊
⑥ linux g++編出來的庫可不可以供c文件調用
默認是不可以的。因為 C++ 需要支持多態,重載的原因,定義的函數名字,在編譯的時候會被編譯器改寫。如 int foo(int arg); 可能會被改寫成 int __xxZyyfooqq 這個樣子。
而 C 編譯器不會干這種事情,所以會找不到函數名。
當然,C++ 既然是兼容 C 的,也就給出了解決方案。你在函數聲明的時候寫上:
#ifdef__cplusplusextern"C"{#endif
intfoo(intarg);
#ifdef__cplusplus
}
#endif
使用 extern "C",告訴 g++ 使用 C 語言的命名方式,就可以了。
⑦ linux下編譯的靜態庫可不可以在unix下用
你已經用gcc編譯出目標文件了,用ar工具打包成.a文件就行了啊,示例: 如上圖,假設我有test1.c,test2.c兩個源文件,先使用gcc -c *.c將源文件編譯成目標文件,可以看到,生成了test1.o,test2.o兩個目標文件,然後,使用ar命令:ar crv libtest.
⑧ 缺少動態庫的情況下,能通過編譯嗎
>> 如果你是鏈接動態庫,在GCC後跟了一個-l參數,其後就是你所需庫的名稱,
>> 那麼你不僅需要那個你所需的庫文件,還需要你所需庫的頭文件才行,編譯時需要頭文件支持,
>> 鏈接時需要庫文件,不管你是動態還是靜態編譯都是如此!!!!
頭文件不是必須的。只要沒有出現未聲明的函數/變數的調用就可以。
>> 還需說明的一點是:只有用參數-o時才會有那個-satic的選項,
>> 也就是說只有在鏈接程序時才會有動態鏈接和靜態鏈接之分!!!!!!
沒有 -o 也可以 -static。-o 不代表鏈接
>> 動態鏈接庫是為了減少可執行文件的大小,就是在一個系統中只提供一個庫,
>> 可供多個動態鏈接的程序共同使用
同時也避免庫代碼被重復載入進入內存,減少系統內存佔用
⑨ 為什麼易語言編譯文件成功了但是文件里的功能都不能用
可能是編譯問題
易語言的編譯有以下特點
普通編譯:只能在有易語言的電腦上 且必須要完整的易語言支持庫才能使用
易語言4.13獨立翻譯:翻譯完了就可以直接用 自帶支持庫的運行庫
易語言5.10-5.11靜態翻譯:翻譯後還需要使用C++再次翻譯成.exe的程序
⑩ boost庫需要編譯嗎是否是可以直接使用的那種
必須編譯。編譯時間可能是15~30分鍾,等待即可,否則無法使用。