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

g靜態編譯

發布時間: 2022-06-04 13:03:34

❶ 易語言靜態編譯之後打不開

方法:
1、先在易語言目錄下搜索LINK.EXE,然後復制路徑,比如我的是
G:\易語言\易語言v5.11\VC98linker\Bin\LINK.EXE
2、在易語言目錄下搜索link.ini,然後用記事本打開
3、大概在15段的位置有個linker=,然後你就在那裡把LINK.EXE的路徑放進去就OK了~

linux靜態庫怎麼編譯

linux庫有動態與靜態兩種,動態通常用.so為後綴,靜態用.a為後綴。例如:libhello.so
libhello.a
為了在同一系統中使用不同版本的庫,可以在庫文件名後加上版本號為後綴,例如:
libhello.so.1.0,由於程序連接默認以.so為文件後綴名。所以為了使用這些庫,通常使用建立符號連接的方式。
ln
-s
libhello.so.1.0
libhello.so.1
ln
-s
libhello.so.1
libhello.so
動態庫和靜態庫的區別:
當要使用靜態的程序庫時,連接器會找出程序所需的函數,然後將它們拷貝到執行文件,由於這種拷貝是完整的,所以一旦連接成功,靜態程序庫也就不再需要了。然而,對動態庫而言,就不是這樣。動態庫會在執行程序內留下一個標記『指明當程序執行時,首先必須載入這個庫。由於動態庫節省空間,linux下進行連接的預設操作是首先連接動態庫,也就是說,如果同時存在靜態和動態庫,不特別指定的話,將與動態庫相連接。
兩種庫的編譯產生方法:
第一步要把源代碼編繹成目標代碼。以下面的代碼hello.c為例,生成hello庫:
/*
hello.c
*/
#include
void
sayhello()
{
printf("hello,world\n");
}
用gcc編繹該文件,在編繹時可以使用任何全法的編繹參數,例如-g加入調試代碼等:
gcc
-c
hello.c
-o
hello.o
1.連接成靜態庫
連接成靜態庫使用ar命令,其實ar是archive的意思
$ar
cqs
libhello.a
hello.o
2.連接成動態庫
生成動態庫用gcc來完成,由於可能存在多個版本,因此通常指定版本號:
$gcc
-shared
-wl,-soname,libhello.so.1
-o
libhello.so.1.0
hello.o
另外再建立兩個符號連接:
$ln
-s
libhello.so.1.0
libhello.so.1
$ln
-s
libhello.so.1
libhello.so
這樣一個libhello的動態連接庫就生成了。最重要的是傳gcc
-shared
參數使其生成是動態庫而不是普通執行程序。
-wl
表示後面的參數也就是-soname,libhello.so.1直接傳給連接器ld進行處理。實際上,每一個庫都有一個soname,當連接器發現它正在查找的程序庫中有這樣一個名稱,連接器便會將soname嵌入連結中的二進制文件內,而不是它正在運行的實際文件名,在程序執行期間,程序會查找擁有
soname名字的文件,%b

❸ 易語言5.11無法靜態編譯

直接手動修改就行了,用了那些自動的修改工具也不一定能行。
1、先在易語言目錄下搜索LINK.EXE,然後復制路徑,比如我的是
G:\易語言\易語言v5.11\VC98linker\Bin\LINK.EXE
2、在易語言目錄下搜索link.ini,然後用記事本打開
3、大概在15行的位置有個linker=,然後你就在那裡把LINK.EXE的路徑放進去就OK了~

❹ 編譯原理:構造產生此語言的上下文無關文法G

對於文法G=(V, T, S, P),如果產生式的形式如下:
A -> xB
A -> x
其中A, B屬於V,x屬於T*,則稱為右線性文法;相似的,如果產生式的形式如下:
A -> Bx
A -> x
則稱為左線性文法。右線性文法和左線性文法統稱為正則文法。
正則表達式的表達能力等價於正則文法,正則表達式的定義如下:
字母表中的任意字母是正則表達式,空串和空集也是正則表達式;
如果r, s是正則表達式,那麼r|s, rs, r*, (r)也是正則表達式。
正則表達式的擴展:
r+:一個或多個重復
. :任意字元
[a-z]:字元范圍
[^abc]:不在給定集合中的任意字元
r?:可選
正則表達式只能使用終結符(字母表中的字元),因而很容易變得復雜又難懂,實際中,經常使用正則描述,正則描述允許使用非終結符定義表達式,很像EBNF,但是它限制在未完全定義之前,不能使用非終結符,也就是說不允許遞歸或自嵌套。
像正則表達式的表達能力等價於正則文法一樣,BNF範式的表達能力等價於上下文無關文法。BNF是「Backus Naur Form」的縮寫。John Backus和Peter Naur首次引入一種形式化符號來描述給定語言的語法。
BNF的元符號:
::= 表示「定義為 」,有的書上用-->
| 表示「或者」
< > 尖括弧用於括起非終結符。
BNF的擴展EBNF:
可選項被括在元符號「[」和「]」中
重復項(零個或者多個)被括在元符號「{」和「}」中
僅一個字元的終結符用引號(")引起來,以和元符號區別開來
上述操作符不是嚴格限定的,有的人喜歡直接使用擴展正則表達式的操作符描述EBNF。除了方便表達以外,引入EBNF的另一個主要原因是為了更緊密地把文法映射到遞歸下降分析程序的真實代碼。當需要手動構造歸下降分析程序的時候,通常把上下文無關文法改寫為EBNF是必需的。
如果一個上下文無關文法G不是自嵌套或自遞歸的,即不存在如下推導:
U =>* xUy
那麼L(G)是正則語言。自嵌套的上下文無關文法不一定是正則語言。事實上,一個上下文無關文法是嚴格的,既不可能由正則文法產生,當且僅當該語言的一切文法都是自嵌套的。
如果一個上下文無關文法G不是自嵌套或自遞歸的,即不存在如下推導:
U =>* xUy
那麼L(G)是正則語言。自嵌套的上下文無關文法不一定是正則語言。事實上,一個上下文無關文法是嚴格的,既不可能由正則文法產生,當且僅當該語言的一切文法都是自嵌套的。
BNF的擴展EBNF:
可選項被括在元符號「[」和「]」中
重復項(零個或者多個)被括在元符號「{」和「}」中
僅一個字元的終結符用引號(")引起來,以和元符號區別開來
上述操作符不是嚴格限定的,有的人喜歡直接使用擴展正則表達式的操作符描述EBNF。除了方便表達以外,引入EBNF的另一個主要原因是為了更緊密地把文法映射到遞歸下降分析程序的真實代碼。當需要手動構造歸下降分析程序的時候,通常把上下文無關文法改寫為EBNF是必需的。
如果一個上下文無關文法G不是自嵌套或自遞歸的,即不存在如下推導:
U =>* xUy
那麼L(G)是正則語言。自嵌套的上下文無關文法不一定是正則語言。事實上,一個上下文無關文法是嚴格的,既不可能由正則文法產生,當且僅當該語言的一切文法都是自嵌套的。
如上所述,上下文無關文法的遞歸性,對其分析方法也有很大影響。首先,用作識別這些結構的演算法必須使用遞歸調用或顯式管理的分析棧。其次,用作表示語言語義結構的數據結構現在也必須是遞歸的(通常是一顆分析樹),而不再是線性的(如同用於詞法和記號中的一樣)了。
在程序設計語言中,通常用正則表達式描述詞法規則。但是正則表示式的表達能力有限,她無法表達括弧配對等語法形式,因而,需要引入表達能力更強的上下文無關文法。編譯程序中常用正則文法表示詞法,用上下文無關文法表示語法。那麼程序語言中那些屬於詞法哪些屬於語法呢?一個簡單的辦法,把所有能用正則文法表示的規則成為詞法,即我們用盡可能的使用正則文法表示更多的東西,那些無法用正則表示式表示的成為句法,如C語言中的{ statement; }語法形式。語言中有些規則使用上下文無關文法仍然無法描述,例如變數的定義在使用之前,類型匹配等等,這些通常稱為(靜態)語義,它們在編譯程序的靜態語義檢查階段進行檢測。
如果一個上下文無關文法G不是自嵌套或自遞歸的,即不存在如下推導:
U =>* xUy
那麼L(G)是正則語言。自嵌套的上下文無關文法不一定是正則語言。事實上,一個上下文無關文法是嚴格的,既不可能由正則文法產生,當且僅當該語言的一切文法都是自嵌套的。

❺ 易語言編譯失敗

我也是菜鳥,我認為你用的破解版,因為5.11版沒有編譯功能,如果你用的是破解版,那就很有可能出現漏洞了。買個正版的吧。或者你是正版的,但你按的不是靜態編譯。如果你安的是盜版的,我這有一個更好的,更無恥的,更有愧於正版的一個比較好的版本,要的留郵箱!

熱點內容
b站如何知道賬號密碼 發布:2024-05-08 20:33:55 瀏覽:691
知識圖譜演算法 發布:2024-05-08 20:33:19 瀏覽:908
手機登雲伺服器windows 發布:2024-05-08 20:32:57 瀏覽:113
上傳3d模型 發布:2024-05-08 20:11:41 瀏覽:604
國內訪問外國網站 發布:2024-05-08 20:09:40 瀏覽:859
wifi熱點無internet訪問 發布:2024-05-08 20:09:37 瀏覽:892
林肯哪個配置最好 發布:2024-05-08 20:02:42 瀏覽:68
java變數的聲明 發布:2024-05-08 19:50:44 瀏覽:977
c語言大數階乘 發布:2024-05-08 19:40:51 瀏覽:543
華為手機上滑自動出來清理緩存 發布:2024-05-08 19:29:21 瀏覽:284