Linux下的原始檔安裝

2021-09-30 11:49:39 字數 2930 閱讀 6908

linux 下原始檔安裝一共需要三步:

1  ./configure

2  make

3  make install

解壓後資料夾為freetype-2.4.10,假設其在根目錄下,進入此資料夾 cd /freetype-2.4.10。

1  ./configure

configure是乙個可執行指令碼,用來檢查系統是否有編譯需要的庫以及庫的版本是否滿足要求。如果要指定安裝

目錄可以通過prefix指定,一般預設prefix=usr/local,可以在configure檔案裡檢視。如果要設定自己的安裝目錄

(便於檢視都安裝了哪些檔案),假設安裝在/tmp目錄下,可以:

./configure  --prefix=/tmp

2   make

根據makefile編譯檔案

3 make install

把編譯好的檔案安裝到系統中。所謂安裝一般也就是乙個複製的過程,把產生的標頭檔案、庫檔案等拷貝到安裝

目錄裡。檢視makefile的install可知,類似於make clean.。

編譯向量字型檔案:

gcc -finput-charset=gbk -fexec-charset=utf-8 -o example1 example1.c  -i /usr/local/include/freetype2 

-lfreetype -lm

如果你認為所有的原始檔安裝都是這樣的,那就錯了,上面的這三步適合linux下使用,在arm上就不行了。

那我如何知道該在什麼平台怎麼安裝呢,這就要檢視原始檔提供的文件了。如果要知道linux下怎麼安裝,檢視

vi  /freetype-2.4.10/docs/intsall.unix。

如果安裝的檔案在要arm上執行,則要檢視vi  /freetype-2.4.10/docs/intsall.cross  ,cross是交叉編譯

的意思。根據文件可知arm上安裝步驟:

1    ./configure --host=arm-linux

host指定編譯好的檔案在什麼平台下執行,arm上的話指定交叉編譯。

2   make

3    make destdir=/tmp install

destdir指定安裝路徑,也可以在第一步用prefix指定。

當前編譯好的檔案放在了/tmp目錄下,是不能在arm上執行的。要想在arm上執行

編譯出來的標頭檔案應該放入:

/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

編譯出來的庫檔案應該放入:

/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

庫檔案複製

把tmp/usr/local/lib/*  複製到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

sudo cp * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib -d -rf

庫檔案拷貝到網路檔案系統下編譯好的應用程式才可以在arm板上執行

cp *so* /nfs_root/lib -d

標頭檔案複製

把tmp/usr/local/include/*  複製到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

cp * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include -rf

這樣編譯有個頭檔案錯誤,因為#include包含標頭檔案路徑是

freetype/config/ftheader.h

但是theader.h 實際路徑是在

freetype2/freetype/config/ftheader.h 

所以用要移動一下:

cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

mv freetype2/freetype .

第一部分沒有移動用 -i /usr/local/include/freetype2 指定標頭檔案路徑,這樣每次編譯都要指定。

編譯檔案

arm-linux-gcc -finput-charset=gbk -o example1 example1.c  -lfreetype -lm

安裝不同的gcc版本其實拷貝的路徑是不同的,可以在安裝路徑下通過

find -name include

find -name stdio.h

來判斷實際路徑,一般是 ./..../include/stdio.h 這種形式的,即include後不再有任何目錄。lib路徑

find -name lib

參照incllue路徑選擇是哪個,一般和include是在同乙個目錄下。

gcc-3.4.5上的安裝路徑

標頭檔案cp /work/freetype-2.4.10/tmp/usr/local/include/* /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include -rf

mv freetype2/freetype ./

庫檔案cp /work/freetype-2.4.10/tmp/usr/local/lib/* /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib -rf -d

這樣的話在linux系統下就可以使用arm-linux-gcc交叉編譯了

在arm板上執行的話,需要把庫檔案拷貝到網路根檔案系統下的lib裡面

cp /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/libfreetype.so.6       /nfsroot/lib

mysql 原始檔安裝 Mysql原始檔安裝

mysql原始檔安裝 1 安裝準備 a 刪除linux自帶的mysql資料庫,命令為 root localhost rpm qa grep mysql root localhost rpm e nodpes mysql 這裡的 號貌似不能用需要完整的安裝檔名 b 刪除已存在的mysql使用者及使用者...

Linux安裝SVN 原始檔編譯安裝

第一章 安裝 1.採用原始檔編譯安裝。原始檔共兩個,為 subversion 1.6.1.tar.gz subversion 原始檔 subversion deps 1.6.1.tar.gz subversion 依賴檔案 注意檔案版本必須一致 否則很容易產生各種奇怪的問題 2.上傳以上兩個檔案到伺...

Linux下將原始檔編譯成目標檔案的過程解析

乙個.c源程式需要經過預處理器生成.i檔案,再經過編譯器生成.s檔案,再經過彙編器生成可重定位目標檔案.o檔案,再與其他.o檔案經過鏈結器生成最終的可執行目標程式。預處理階段。主要是處理原始檔中以 開頭的預編譯指令。刪除 define並展開巨集 處理所有條件預編譯指令,如 if,ifdef,endi...