當前位置:首頁 » 編程軟體 » c靜態編譯

c靜態編譯

發布時間: 2022-01-24 23:21:15

㈠ 用C做的靜態庫,能破解成c語言

目前沒有技術可以把C和C++編譯出的機器語言反編譯成源程序
但是可以反編譯成匯編程序,這個叫反匯編。
因此:用C做的靜態庫,不能破解成C語言

㈡ c語言有靜態編譯嗎

你說的是庫吧,不是頭文件,頭文件沒關系,
如果要靜態編譯,使用gcc的話,只要加上-static選項就行了

㈢ cmake編譯opencv程序的時候怎麼靜態編譯

使用opencv需要編譯源碼,得到庫文件。可以用cmake構建項目後編譯,也可以直接用官方提供的編譯好的版本。 官方提供的編譯庫一般只是標准版本,沒有附加某些庫,比如tbb等,要想讓opencv使用tbb等庫,就只能自己構建項目後編譯。

㈣ 如何將c語言的math.h編譯為靜態庫在mcu上使用

庫函數的源碼你是看不到的。要找實現的話得去網路。自帶的都是編譯好的東西(用到時直接調用)不是原C程序。
至於sin()的實現。如果你學過高數應該知道泰勒展開。
不知道的話直接給你公式:sin(x)=x-(x^3)/3!+(x^5)/5!+...(按這規律求和下去,x是弧度)

用一個for循環。要精確的話循環的次數多些就行

㈤ C語言里printf函數可不可以靜態編譯到可執行文件里

為什麼不可以呢?

linux怎麼靜態編譯

關於在 Linux 環境下面對 C 語言源程序進行靜態編譯,關鍵是要看你的 C 語言源程序中都使用到了哪些系統庫函數?如果是標準的輸入、輸出庫函數,只要在命令行提示符 $ 下面執行:
gcc my_prog.c 即可(預設的可執行文件名是:a.out);如果在用戶的源程序中使用到了數學計算函數,那麼在命令行提示符 $ 下面必須執行:
gcc my_prog.c -IMATH.LIB(假設涉及到各種數學計算的數學庫的庫文件為:MATH.LIB)
如果不加上 -IMATH.LIB 選項,那麼即使你的源程序編寫得再正確,也無法正常編譯。
另外還有一個必須要注意的就是:在 Linux 的環境變數中,一定要把 INCLUDE、LIB 所在的路徑設置好(在 SHELL 文件中寫好),這樣在使用 Linux 系統時才能夠減少出錯的機會。

㈦ 請問怎麼用自己寫的C源碼和靜態鏈接庫編譯新的動態鏈接庫

要在test.c加入#pragma comment(lib, "a.lib"),然後自己重新對a的函數封裝,再編譯成b.dll,這樣的話,只要動態載入b.dll就行了,不過a.dll應該放在b.dll同一目錄下。

㈧ C語言編譯問題 靜態鏈接

鏈接靜態庫的意思就是在編譯階段需要將靜態庫鏈接到工程中,這樣在編譯時程序才不會出錯,在用到靜態庫的函數時能夠找到函數的實現,如果沒有鏈接靜態庫則編譯時會報錯。
這里需要區分的就是鏈接動態庫與靜態庫的區別,你可以到網上找一些資料看看。
而且鏈接靜態庫是將整個庫文件都導入到了工程中,所以會增加工程的大小。

㈨ windows怎麼編譯.c文件

(1)先用記事本編寫如下所示的代碼,並另存為hello.cpp,假設其保存路徑為
C:\Users\Administrator\Desktop。
#include<iostream>
using namespace std;
int main()
{
cout<<"hello world!"<<endl;
return 0;
}
(2)用記事本寫一段簡單的批處理文件,內容如下所示,在保存文件時選擇另存為,文件名
假設為batch.bat,bat是批處理文件的後綴,保存類型選擇:所有文件(這個尤其需要注意),
假設其保存路徑也是:C:\Users\Administrator\Desktop。
set path=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\bin
set include=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\include
set lib=D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\lib
上面批處理文件的第一句話表示設置環境變數,這個也可以通過:計算機/屬性/高級系統設置/
環境變數/用戶變數,把D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\VC\bin
放到path的值里去,記得與之前已有值之間用";"隔開。這個path文件夾是我們裝載VS2010時自
帶的,在設置路徑時要根據自己的安裝路徑進行修改,裡麵包含微軟在Windows下給我們提供的
C/C++編譯器cl.exe程序(編譯器自身也是一個軟體程序,只是它的作用是用來編譯其它的程序),
當然還有link.exe鏈接程序,調用cl時,系統會自動調用link程序(後面將看到我們只用了cl命令就
可以進行C/C++程序的編譯、鏈接)。後面兩句話分別表示包含C++中自帶的頭文件庫和靜態鏈接
庫,靜態理解庫包含了頭文件中函數對應的實現部分,為了不讓人們看到其中的源代碼,它以二進
制文件形式編碼,若要查看其內容需要進行反匯編。
(3)通過cmd命令進入DOS操作界面,輸入cd C:\Users\Administrator\Desktop進入cpp文件和bat
批處理文件所在的位置,然後鍵入batch.bat進行批處理,這些操作在VS2010集成開發環境中都為我
設置好了,所以我們在裡面寫C/C++程序時並沒有這樣設置路徑的繁瑣操作,但是通過自己手動的
路徑設置,我們會對程序的編譯、鏈接、執行有更加深入的認識。
(4)鍵入cl hello.cpp,我們會看到計算機報出了「無法啟動此程序,因為計算機中丟失mspdb100.dll。
嘗試重新安裝該程序以解決此問題」的系統儲物,dll文件是動態鏈接庫文件,其是在cl.exe程序運行時
才被載入進來的文件,這個靜態鏈接庫lib文件不同。這說明在D:\Softwares\en_Visual_Studio2010_
Professional_x86_x16-81637\VC\bin路徑里沒有找到mspdb100.dll,原來此文件在文件夾D:\Softwares\
en_Visual_Studio2010_Professional_x86_x16-81637\VC\Common7\IDE里,我們可以將此文件拷到bin
文件夾里,或將D:\Softwares\en_Visual_Studio2010_Professional_x86_x16-81637\Common7\IDE加到
批處理的path環境變數里,或者將其加到cpp文件所在的文件夾里,這只會引起在搜索順序上的不同。
(5)再次鍵入cl hello.cpp,我們看到在C:\Users\Administrator\Desktop文件夾里得到了hello.obj文件,
這是編譯後的輸出文件,但是沒有得到可執行exe文件,DOS界面里出現這樣的錯誤「LINK:fatal error LNK
1104:cannot open file 'kernel32.lib' 「這樣的鏈接錯誤,kernel32.lib是Windows系統文件,通過Windows
自帶的搜索工具,我們看到此文件在文件夾C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib里,我們
可以將其加到cpp文件所在的文件夾或bin文件里。再次鍵入cl hello.cpp,我們發現這次程序被成功編譯鏈接
了,cpp文件所在的文件夾里多了兩個文件:hello.obj和hello.exe。
(6)在DOS界面鍵入hello.exe,程序被執行,輸出了我們預想的hello world!,至此,在Windows下模擬
linux命令行操作,編譯C/C++文件全部完成了。

熱點內容
android時間時區時間 發布:2024-12-26 09:09:54 瀏覽:688
外殼加密狗 發布:2024-12-26 08:57:59 瀏覽:844
筆記本電腦密碼怎麼破解 發布:2024-12-26 08:57:20 瀏覽:71
360雲盤分享取消密碼是多少 發布:2024-12-26 08:55:37 瀏覽:821
腳本啥格式 發布:2024-12-26 08:55:00 瀏覽:129
學C語言書 發布:2024-12-26 08:46:46 瀏覽:85
win7共享文件訪問許可權 發布:2024-12-26 08:33:22 瀏覽:148
安卓如何下載play商店app 發布:2024-12-26 08:32:31 瀏覽:499
我的世界網易伺服器卡崩進不去 發布:2024-12-26 08:20:48 瀏覽:739
sqlserver導出xml 發布:2024-12-26 08:06:26 瀏覽:290