源碼包整理
『壹』 您好,我有一個xorg的源碼包,怎麼讓這個源碼包在我的debian上跑起來
在編譯的時候可以添加一些編譯設置:
可以通過./configure –help來查看我們可以有哪些編譯參數可以設置,
我一般只會選擇
#./autogen.sh -prefix=/usr/local -enable-config-hal CFLAGS='-O0 -g3'
編譯的時候需要下載的包:
xutils, libxkbfile-dev, libxfont-dev, libfontenc-dev, libssl-dev,xvfb
x11proto-fixes-dev, x11proto-damage-dev, x11proto-xcmisc-dev, x11proto-scrnsaver-dev, x11proto-bigreqs-dev, x11proto-resource-dev, x11proto-composite-dev, x11proto-evie-dev, x11proto-xf86dga-dev
libhal-dev
執行make,通過後執行make intall。因為前面設置了–prefix=/usr/local,所以當執行make install的時候將所有編譯的庫和可執行文件都放在/usr/local目錄下,所以不會影響ubuntu8.10自帶的xorg。但是執行startx的時候,系統還是會調用/usr/bin目錄下的xorg,所以我們這個時候只要將/usr/local/bin/xorg拷貝到/usr/bin/目錄下就可以了,這個xorg會自動鏈接/usr/local/目錄下我們編譯的庫,但要注意保存/usr/bin/目錄下本來的xorg,如果想用回原來的xorg,只要將它重新拷貝過去即可。
『貳』 10分鍾快速精通rollup.js——Vue.js源碼打包原理深度分析
Vue.js源碼打包基於rollup.js的API,流程大致可分為五步。首先將Vue.js源碼clone到本地,安裝依賴,然後通過build指令進行打包。打包成功後會在dist目錄下創建打包文件。Vue.js還提供了另外兩種打包方式:「build:ssr"和"build:weex」。
Vue.js打包源碼分析,Vue.js源碼打包基於rollup.js的API,流程大致可分為五步,如下圖所示:執行npm run build時,會從scripts/build.js開始執行。前5行分別導入了5個模塊,這5個模塊的用途在前置學習教程中已經詳細過。第7行通過同步方法判斷dist目錄是否存在,如果不存在則通過同步方法創建dist目錄。生成rollup配置,生成dist目錄後,通過以下代碼生成了rollup的配置文件。代碼雖然只有短短一句,但是做了很多事情。首先它載入了scripts/config.js模塊,然後調用其中的getAllBuilds()方法。接下來導入了scripts/alias.js模塊,alias.js模塊輸出了一個對象,這個對象中定義了所有的別名及其對應的絕對路徑。這個模塊中定義了resolve()方法,用於生成絕對路徑。
Vue.js打包流程分析,Vue.js源碼打包基於rollup.js的API,流程大致可分為五步,如下圖所示:執行npm run build時,會從scripts/build.js開始執行。前5行分別導入了5個模塊,這5個模塊的用途在前置學習教程中已經詳細過。第7行通過同步方法判斷dist目錄是否存在,如果不存在則通過同步方法創建dist目錄。生成rollup配置,生成dist目錄後,通過以下代碼生成了rollup的配置文件。代碼雖然只有短短一句,但是做了很多事情。首先它載入了scripts/config.js模塊,然後調用其中的getAllBuilds()方法。接下來導入了scripts/alias.js模塊,alias.js模塊輸出了一個對象,這個對象中定義了所有的別名及其對應的絕對路徑。這個模塊中定義了resolve()方法,用於生成絕對路徑。
Vue.js打包流程分析,Vue.js源碼打包基於rollup.js的API,流程大致可分為五步,如下圖所示:執行npm run build時,會從scripts/build.js開始執行。前5行分別導入了5個模塊,這5個模塊的用途在前置學習教程中已經詳細過。第7行通過同步方法判斷dist目錄是否存在,如果不存在則通過同步方法創建dist目錄。生成rollup配置,生成dist目錄後,通過以下代碼生成了rollup的配置文件。代碼雖然只有短短一句,但是做了很多事情。首先它載入了scripts/config.js模塊,然後調用其中的getAllBuilds()方法。接下來導入了scripts/alias.js模塊,alias.js模塊輸出了一個對象,這個對象中定義了所有的別名及其對應的絕對路徑。這個模塊中定義了resolve()方法,用於生成絕對路徑。
Vue.js打包流程分析,Vue.js源碼打包基於rollup.js的API,流程大致可分為五步,如下圖所示:執行npm run build時,會從scripts/build.js開始執行。前5行分別導入了5個模塊,這5個模塊的用途在前置學習教程中已經詳細過。第7行通過同步方法判斷dist目錄是否存在,如果不存在則通過同步方法創建dist目錄。生成rollup配置,生成dist目錄後,通過以下代碼生成了rollup的配置文件。代碼雖然只有短短一句,但是做了很多事情。首先它載入了scripts/config.js模塊,然後調用其中的getAllBuilds()方法。接下來導入了scripts/alias.js模塊,alias.js模塊輸出了一個對象,這個對象中定義了所有的別名及其對應的絕對路徑。這個模塊中定義了resolve()方法,用於生成絕對路徑。
Vue.js打包流程分析,Vue.js源碼打包基於rollup.js的API,流程大致可分為五步,如下圖所示:執行npm run build時,會從scripts/build.js開始執行。前5行分別導入了5個模塊,這5個模塊的用途在前置學習教程中已經詳細過。第7行通過同步方法判斷dist目錄是否存在,如果不存在則通過同步方法創建dist目錄。生成rollup配置,生成dist目錄後,通過以下代碼生成了rollup的配置文件。代碼雖然只有短短一句,但是做了很多事情。首先它載入了scripts/config.js模塊,然後調用其中的getAllBuilds()方法。接下來導入了scripts/alias.js模塊,alias.js模塊輸出了一個對象,這個對象中定義了所有的別名及其對應的絕對路徑。這個模塊中定義了resolve()方法,用於生成絕對路徑。
Vue.js打包流程分析,Vue.js源碼打包基於rollup.js的API,流程大致可分為五步,如下圖所示:執行npm run build時,會從scripts/build.js開始執行。前5行分別導入了5個模塊,這5個模塊的用途在前置學習教程中已經詳細過。第7行通過同步方法判斷dist目錄是否存在,如果不存在則通過同步方法創建dist目錄。生成rollup配置,生成dist目錄後,通過以下代碼生成了rollup的配置文件。代碼雖然只有短短一句,但是做了很多事情。首先它載入了scripts/config.js模塊,然後調用其中的getAllBuilds()方法。接下來導入了scripts/alias.js模塊,alias.js模塊輸出了一個對象,這個對象中定義了所有的別名及其對應的絕對路徑。這個模塊中定義了resolve()方法,用於生成絕對路徑。
『叄』 linux中源代碼包安裝的基本步驟是什麼
詳解linux源碼包安裝過程
1. 解壓縮包
可以通過下載或其他方式獲得了一個軟體包,通常它是一個壓縮文件,大部分可能是存檔的和壓縮的,這些文件一般以 .tar .gz為擴展名。
首先拷貝它到一個目錄,然後 untar 和 gunzip 解壓它。 通常這個命令是
tar xzvf filename [filename 是軟體文件名稱]
解壓後的文件一般會在當前目錄下的創建子目錄,並以這個包名來命名。 你也可以用用這個命令預先查看結果 tar tzvf filename,顯示包里有那些解壓文件。
源文件如果是新的 bzip2 (.bz2) 格式,可用
bzip2 -cd filename | tar xvf -,或更簡單的 tar xyvf filename ,這很不錯的tar命令被不斷的完善。
說明:
A:有時候一些文件必須安裝在用戶的 home 目錄下,或更多的是在一個固定的目錄,比如 /, /usr/src, 或 /opt 。所以必須仔細閱讀安裝包的配置信息。當一個軟體包里如果有config 和 Makefiles 文件則最好去編輯它,這里包括了安裝指令和說明。提示:你改變 makefile 會導致不同的結果。大部分軟體包允許用 make install 自動處理安置二進制文件在適當的系統位置。
B:你可能碰到過一些共享文件、shell 存檔文件、尤其是 Internet 上的源碼新聞組。它們保留的原因是具有人性化的可讀性,並且允許新聞組緩沖並通過它們篩選和剔除出不合格的。它們可能用 unshar filename.shar 命令來解壓。
C: 一些源碼存檔文件是用非標準的 DOS,Mac 或其他壓縮的比如:
zip, arc, lha, arj, zoo, rar, and shk.
D: 有時候,你可能需要使用一個 patch 或顯示改變了的 diff 文件來升級或修復存檔的源碼文件。這 doc 文件或者 README 文件將告訴你怎麼去使用。一個很好的命令用標准語法來調用的命令是 patch < patchfile.
2: 關於 rpm 安裝包
一些 Linux 用戶懼怕通過使用源碼來手動安裝軟體包,不過現在有方便的 rpm 和 deb 或 新格式的 slp 包。例如:rpm 安裝運行平穩又快,作為一個軟體安裝在某幾個有名的操作系統。
作為方便的RPM包也存在很多不好的缺點,例如:
A: 要了解軟體中更多更詳細的內容你必須去在二進制中去了解,而不是rpm包。
B: 還有安裝一個 rpm 包如果需要依賴關系那麼安裝就可能會導致失敗。
C: 當 rpm 請求你系統中不同版本的庫,那麼安裝將不能繼續,除非你為錯誤的庫位置創建連接符號到正確的位置。
說明:必須使用root 安裝 rpm 和 deb 。因為它需要必須的寫入許可權。
最簡單的,用命令 rpm -i packagename.rpm 和 dpkg --install packagename.deb 會自動解包和安裝。
3:關於安裝 Linux 包出現的一些問題及解決方案
假設 make 失敗有個鏈接錯誤: -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 開關告訴編譯器和鏈接分別在哪裡找到 library 和 include 文件。在這個例子里, X11 庫應該在 /usr/X11/lib 目錄,且 X11 包含文件應該在 /usr/X11/include/X11 目錄里。假如對於你的機器上的這個錯誤,請處理修改 Makefile 並重新再 make。
沒有聲明涉及的數學庫函數,像下列各項:
/tmp/cca011551.o(.text 0x11): undefined reference to `cos'
要修復它,需要明確鏈接到匹配的庫,在 Makefile (看先前的例子) 里增加一個 -lm 到 LIB 或 LIBS 標記 。
用其他方法嘗試
仍然失敗 如果失敗,參考下列腳本:
make -DUseInstalled -I/usr/X386/lib/X11/config
這個直接方式的類別相當於。
在少數例子里,用 root 運行 ldconfig 可能會解決:
# ldconfig 更新共享庫鏈接符號。
一些 Makefiles 使用你系統里未被承認的庫別名。一個例子,構建可能需要 libX11.so.6 ,但是在 /usr/X11R6/lib 不存在文件或鏈接。然而,在那裡是 libX11.so.6.1。解決方法是用 root 運行ln -s /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/lib/libX11.so.6 ,接著需要運行 ldconfig 。
有一些包需要你安裝一個或更多庫的升級版本。需要拷貝一個或更多的庫到適當的目錄里,刪除舊的庫,重新設置動態鏈接庫。
4:一些其他的問題處理
安裝一個shell 腳本如果出現:No such file or directory 的錯誤消息。這是可以檢查文件許可權確定文件事可執行的,並檢查文件頭確定是否 shell 或程序是腳本在指定的位置被調用。一個例子,這個腳本可能是這樣開始的:
#!/usr/local/bin/EDEN
如EDEN的實際安裝位置是在你的 /usr/bin 目錄,用一個 /usr/local/bin 替代
這個腳本不能運行有兩個方法來糾正!!
A: 文件頭改成 #!/usr/bin/EDEN
B: 或增加一個鏈接符, ln -s /usr/bin/EDEN
5:一個典型的例子 Xloadimage
首先說明下面的例子來源於國外網站的一個技術實例,這里我做了翻譯和整理。
這個例子展現一個簡單的問題。xloadimage 程序對我的圖形工具的調整設置是有用的附加。從源碼目錄拷貝文件,用 tar xzvf 解壓文件,可是在運行 make 的時候出現令人討厭的錯誤並停止了。
gcc -c -O -fstrength-rece -finline-functions -fforce-mem
-fforce-addr -DSYSV -I/usr/X11R6/include
-DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\" mcidas.c
In file included from /usr/include/stdlib.h:32,
from image.h:23,
from xloadimage.h:15,
from mcidas.c:7:
/usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215:
conflicting types for `wchar_t'
/usr/X11R6/include/X11/Xlib.h:74: previous declaration of
`wchar_t'
make[1]: *** [mcidas.o] Error 1
make[1]: Leaving directory
`/home/thegrendel/tst/xloadimage.4.1'
make: *** [default] Error 2
這個錯誤消息包含了實質的線索:
查看 image.h 文件的 23 行:
#include < stdlib.h>
在源碼的某處對於 xloadimage, wchar_t 已經在指定標准 include 文件重新定義。 告訴我們首先在 image.h 的 23 行嘗試注釋它,或許 stdlib.h include 是不存在的,畢竟不是所有都是必需的。
在這點,構建中的收益來源於所有任何一個致命錯誤。xloadimage 現在功能正常。
6: 安裝 Linux 包的一些總結
堅持自己動手處理所有的安裝出現的問題,不斷總結努力學習,從錯誤里去仔細研究,努力動手排錯,從每個不足甚至失敗的地方得到擴充和提升,可以增強安裝構建軟體的技巧。
『肆』 在Linux的LEMP環境下配置OpenSSL的教程
今天,給大家分享一下解決源碼包編譯安裝 LEMP 環境下開啟 OpenSSL 功能問題的過程。前幾天,在訪問頁面時,突然報錯,要求開啟 openssl 功能。那怎麼辦呢,首先想到的是 yum 安裝,但是,安裝後還是沒解決,因為 LEMP 的環境是源碼包編譯安裝的,所以,還需要編譯安裝 openssl。
經過邪惡不懈的努力,終於找到了解決辦法,而且真的成功了,下面就給大家分享一下!
首先,要確保 LEMP 環境是源碼包編譯安裝的,並且要清楚 php 的安裝目錄在哪裡。
其次,可以通過 yum 源的方式或者源碼包編譯安裝 OpenSSL、OpenSSL-devel 兩個包。
然後,進入到 PHP 解壓出來的目錄裡面,我這里的目錄是 PHP-5.4.24。在 PHP 目錄下,會有一個 ext 的擴展目錄,進入裡面,找到並進入 openssl 的目錄。這時,我們所在的目錄是:/root/php-5.4.24/ext/openssl
這個目錄下會有如下文件,看圖:
然後,執行 /usr/local/php5/bin/phpize 命令(在執行前要確保已安裝 m4 和 autoconf 兩個工具,否則會報錯)。
注意:這里是我的phpize路徑,根據自己的安裝路徑執行;如果找不到,使用 whereis phpize 查找。如果執行時報錯無法找到 config.m4 文件,那麼就把目錄下面的 config0.m4 重命名 config.m4,因為 config0.m4就是config.m4 的模版。
如果命令成功執行完畢,那麼目錄下面就會自動多出個 configure 文件,這時,只需要編譯安裝就行了。過程如下:
復制代碼代碼如下:# ./configure --with-openssl --with-php-config=/usr/local/php5/bin/php-config# make && make install
耐心等候,安裝完成後,會在當前的moles目錄下面多出一個openssl.so文件;然後在php.ini配置文件最後面加上如下一行內容:
復制代碼代碼如下:extension=openssl.so然後,重啟nginx服務和php-fpm,就可以了!
至此,在源碼編譯安裝LNMP環境下開啟openssl功能成功解決!