如果用 xmkmf 和/或 make 很成功沒有錯誤, 你可以著手於 next section. 然而, 在真實生活, 很少事情在第一次就正確的工作. 這就是當你的機智豐富時,要勇於嘗試.
Link error: -lX11:
No such file or directory
, 甚至是在使用 xmkmf 後.
這可能意味著 Imake 檔案沒有適當地裝好.
檢查 Makefile 的第一部分有沒有像這樣的幾行:
LIB= -L/usr/X11/lib
INCLUDE= -I/usr/X11/include/X11
LIBS= -lX11 -lc -lm
-L
和 -I
切換器(switches)會通告編譯器和連結器分別去哪裏尋找 library 和 include 檔案.
在這例子, X11 libraries 應該是在 /usr/X11/lib
目錄,
而 X11 include 檔案 應該是在 /usr/X11/include/X11
目錄.
如果這在你的機器上是不對的, 必須改變 Makefile 而且再試試
make.
make -DUseInstalled -I/usr/X386/lib/X11/config
R5 libs
是有 libX11.so.3.1.0
, libXaw.so.3.1.0
,
和 libXt.so.3.1.0
. 一般你需要連結至, 像是
libX11.so.3 -> libX11.so.3.1.0.
大概軟體也需要這個形式連結 libX11.so -> libX11.so.3.1.0.
當然, 要將這"斷掉(missing)"的連結建好, 要以 root 身分使用這指令
ln -s libX11.so.3.1.0 libX11.so.
libc
version 5.4.4 或更新. 以 root身分,
你需要複製一個或以上的函式庫(libraries)至合適的目錄,
刪去舊的函式庫(libraries),然後重設符號連結.
小心: 在這要格外注意, 因為如果你弄糟, 你可能會付出你的系統不能運作的代價.
你通常可以找到升級的函式庫(libraries)在
Sunsite.
No such file or directory
錯誤訊息. 在這情況,檢查檔案權限來確定檔案可執行
以及檢查檔案標頭是否含有使用 shell 或程式, 指明 script 所在地方.
舉例而言, script 開始如:
#!/usr/local/bin/perl
如果 Perl 實際裝在你的 /usr/bin
目錄,
而不是 /usr/local/bin
目錄, 那麼 script 無法執行.
有兩個方法來修改. script 檔案標頭改成 #!/usr/bin/perl
,
或用符號連結至正確的目錄, ln -s
/usr/bin/perl /usr/local/bin/perl.
Motif
函式庫(libraries)才能建立.
而標準的 Linux 發行套件並沒有安裝 Motif libraries, 而且目前 Motif
還要額外 $100-$200 的花費 (雖然免費軟體
Lesstif 在某些場合也能夠用).
如果你需要 Motif 來建立某一套件, 但缺少 Motif libraries,
那麼也許可以取得 靜態連結的二元碼(statically linked binaries).
靜態連結在二元碼本身納入函式庫行程(library routines).
這造成二元碼檔案大了許多, 但是碼可在缺少該函式庫的系統上執行.
Makefile
,
那像是與你所要設法建立的套件亳不相干. 這表示跑著錯誤的 configure,
其找到你的 path 上某處其他的 configure. 所以要下 configure 指令
應該要下成 ./configure 即目前目錄下的.
警告: 一個有 setuid 成 root 的程式可能提出對你的系統有安全上的風險. 這個程式可以 root 權力來跑而所以有某些破害的潛在性. 在設定 setuid bit 前, 確定你知道該程式在做什麼, 必要時看一下原始碼.
你可能希望檢查 Makefile
來確定有選用對你系統最佳編譯選項.
舉例來說, 設定 -O2 旗標來選最高層級的最佳化而
-fomit-frame-pointer 旗標來造最小二元碼
(雖然 debugging 會沒有打開). 除非你知道你在做什麼,
而且在任何情況下, 除非艱苦建立的工作已完成, 否則不要玩這些.
在我的經驗, 大概25%的應用程式建立"完全沒有困難".
另外大約50%能"被說服"的建立, 要付出努力的範圍從無聊到極為困難.
那仍然表示有某些套件無論如何都無法建立. 即使那樣, 那些
Intel ELF
和/或 a.out
二元碼, 也可能在
Sunsite,
TSX-11 archive 或其它地方找到.
也許, 軟體的創造者可以提供編譯好的二元碼給你的特別的機器使用.
注意的是如果你取得預先編譯好的二元碼, 你會需要檢查是否與你的系統相容:
這二元碼必須在你的 硬體上跑 (i.e., Intel x86).
這二元碼必須與你的核心(kernel)相容 (i.e., a.out 或 ELF).
你的函式庫(libraries)必須是最新的.
如果全都失敗, 你可以在合適的 新聞群組尋求幫忙, 像是在 comp.os.linux.x 或 comp.os.linux.development. 萬一你只是不夠幸運的話, 嘿, 試試也是有趣的.