成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

linux頭文件編譯命令 頭文件 編譯

linux編譯安裝命令

Linux編譯安裝相關(guān)命令,下面以L(fǎng)inux安裝MySQL工具為例進(jìn)行說(shuō)明,代碼如下:

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)雙湖,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108

1、測(cè)試環(huán)境在Linux MySQL下進(jìn)行,版本系統(tǒng)為CentOS5,以下為相關(guān)軟件:

mysql-5.1.30

memcached-1.2.6

libevent-1.4.7-stable

memcached_functions_mysql-0.8

libmemcached-0.26

2、編譯安裝Linux MySQL

[root@localhost?~]#tar?xzf?mysql-5.1.30.tar_001.gz??

[root@localhost?~]#cd?mysql-5.1.30??

[root@localhost?~]#./configure?--prefix=/usr/local/mysql51??

[root@localhost?~]#make??

[root@localhost?~]#make?install??

[root@localhost?~]#./scripts/mysql_install_db?--user=mysql?--skip-name-resolve??

[root@localhost?~]#/usr/local/mysql51/bin/mysqld_safe?

#連接符這是放入后臺(tái),是前一個(gè)正確執(zhí)行,才會(huì)執(zhí)行后一個(gè)

#Linux編譯安裝流程./configure??make??make?install(默認(rèn)目錄安裝)

#./configure?--prefix=/usr/local/pcre??make??make?install(指定安裝目錄)

linux下 頭文件,該怎么處理

在Linux下面,如果要編譯一個(gè)C語(yǔ)言頭文件,,要使用GNU的gcc編譯器,以一個(gè)實(shí)例來(lái)說(shuō)明如何使用gcc編譯器:

假設(shè)有下面一個(gè)非常簡(jiǎn)單的源程序(hello.c):

1

2

3

4

int main(int argc,char **argv)

{

printf("Hello Linux\n");

}

要編譯這個(gè)程序,只要在命令行下執(zhí)行:

1

gcc -o hello hello.c

gcc 編譯器就會(huì)生成一個(gè)hello的可執(zhí)行文件;執(zhí)行./hello,就可以看到程序編譯后的輸出結(jié)果“Hello Linux”。

關(guān)于在linux下用gcc編譯頭文件的問(wèn)題。

我用一個(gè)例子來(lái)告訴你怎么樣在 C++ 里使用C的頭文件/函數(shù)。

比方說(shuō)我有一個(gè)C的頭文件叫 c.h, C的源碼文件叫 c.c,內(nèi)容分別是

c.h:

#ifndef _ASDFD_INCLUDED_

#define _ASDFD_INCLUDED_

#include stdio.h

extern int test(int a);

#endif

c.c:

#include "c.h"

int test(int a)

{

printf("A = %d\n", a);

return a*a;

}

現(xiàn)在我想在c++中使用c.c中提供的函數(shù)test(),我的c++文件名字叫 a.cpp,那么里面跟C有關(guān)的部分就要用 extern "C" {} 大括號(hào)括起來(lái),看看我的

a.cpp:

#include iostream

using namespace std;

extern "C"

{

#include "c.h"

}

int main()

{

int b = 12;

b = test(b);

cout"b = "bendl;

return 0;

}

看到了吧,#include "c.h" 被 extern "C" {}括起來(lái)了。

然后是如何編譯,先把C文件編出目標(biāo)文件(.o)來(lái)

gcc -c c.c

你會(huì)看到生成了 c.o,其實(shí),有目標(biāo)文件就夠了,如果你一定要做成(靜態(tài)/動(dòng)態(tài))庫(kù)文件,也是可以的,不過(guò)我這里就不深入了,做成庫(kù)和直接用目標(biāo)文件對(duì)解決你的問(wèn)題沒(méi)有任何區(qū)別。

然后再編譯C++文件,也就是我的 a.cpp

g++ -o hello a.cpp c.o

看到了吧,我在編譯 a.cpp 的時(shí)候把C生成的 c.o也加上了。 然后生成 可執(zhí)行的 hello, 運(yùn)行

./hello

就可以看到

A = 12

b = 144

關(guān)于創(chuàng)建靜態(tài)庫(kù),假定你有3個(gè)C文件, a.c, b.c, c.c 提供了你C++要用到的接口,那么可以把這三個(gè)C文件編譯出來(lái)的目標(biāo)文件放到一個(gè)庫(kù)文件里供C++使用,方法為

先編譯出目標(biāo)文件

gcc -c a.c b.c c.c

這時(shí)候你應(yīng)該看到有 a.o b.o c.o了

然后創(chuàng)建庫(kù)文件

ar cr libtest.a a.o b.o c.o

這三個(gè)目標(biāo)文件就放入 libtest.a 這個(gè)靜態(tài)庫(kù)中了,然后編譯C++程序 (你的C++程序應(yīng)該已經(jīng)按照我前面說(shuō)的用 extern "C" 把C的接口都括起來(lái)了),假定你的 libtest.a 放在 /home/aaa/lib下

g++ -o my.exe my.cpp -L/home/aaa/lib -ltest

就會(huì)生成可執(zhí)行文件 my.exe了。

如何使用linux交叉編譯

采用交叉編譯的主要原因在于,多數(shù)嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源供編譯過(guò)程使用,因而只好將編譯工程轉(zhuǎn)移到高性能的主機(jī)中進(jìn)行。

linux下的交叉編譯環(huán)境重要包括以下幾個(gè)部分:

1.對(duì)目標(biāo)系統(tǒng)的編譯器gcc

2.對(duì)目標(biāo)系統(tǒng)的二進(jìn)制工具binutils

3.目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫(kù)glibc

4.目標(biāo)系統(tǒng)的linux內(nèi)核頭文件

交叉編譯環(huán)境的建立步驟

一、下載源代碼 下載包括binutils、gcc、glibc及l(fā)inux內(nèi)核的源代碼(需要注意的是,glibc和內(nèi)核源代碼的版本必須與目標(biāo)機(jī)上實(shí)際使用的版本保持一致),并設(shè)定shell變量PREFIX指定可執(zhí)行程序的安裝路徑。

二、編譯binutils 首先運(yùn)行configure文件,并使用--prefix=$PREFIX參數(shù)指定安裝路徑,使用--target=arm-linux參數(shù)指定目標(biāo)機(jī)類(lèi)型,然后執(zhí)行make install。

三、配置linux內(nèi)核頭文件

首先執(zhí)行make mrproper進(jìn)行清理工作,然后執(zhí)行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)進(jìn)行配置(注意,一定要在命令行中使用ARCH=arm指定cpu架構(gòu),因?yàn)槿笔〖軜?gòu)為主機(jī)的cpu架構(gòu)),這一步需要根據(jù)目標(biāo)機(jī)的實(shí)際情況進(jìn)行詳細(xì)的配置,筆者進(jìn)行的實(shí)驗(yàn)中目標(biāo)機(jī)為HP的ipaq-hp3630 PDA,因而設(shè)置system type為SA11X0,SA11X0 Implementations中選擇Compaq iPAQ H3600/H3700。

配置完成之后,需要將內(nèi)核頭文件拷貝到安裝目錄: cp -dR include/asm-arm $PREFIX/arm-linux/include/asm cp -dR include/linux $PREFIX/arm-linux/include/linux

四、第一次編譯gcc

首先運(yùn)行configure文件,使用--prefix=$PREFIX參數(shù)指定安裝路徑,使用--target=arm-linux參數(shù)指定目標(biāo)機(jī)類(lèi)型,并使用--disable-threads、--disable-shared、--enable-languages=c參數(shù),然后執(zhí)行make install。這一步將生成一個(gè)最簡(jiǎn)的gcc。由于編譯整個(gè)gcc是需要目標(biāo)機(jī)的glibc庫(kù)的,它現(xiàn)在還不存在,因此需要首先生成一個(gè)最簡(jiǎn)的gcc,它只需要具備編譯目標(biāo)機(jī)glibc庫(kù)的能力即可。

五、交叉編譯glibc

這一步驟生成的代碼是針對(duì)目標(biāo)機(jī)cpu的,因此它屬于一個(gè)交叉編譯過(guò)程。該過(guò)程要用到linux內(nèi)核頭文件,默認(rèn)路徑為$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一個(gè)名為sys-linux的軟連接,使其內(nèi)核頭文件所在的include目錄;或者,也可以在接下來(lái)要執(zhí)行的configure命令中使用--with-headers參數(shù)指定linux內(nèi)核頭文件的實(shí)際路徑。

configure的運(yùn)行參數(shù)設(shè)置如下(因?yàn)槭墙徊婢幾g,所以要將編譯器變量CC設(shè)為arm-linux-gcc): CC=arm-linux-gcc ./configure --prefix=$PREFIX/arm-linux --host=arm-linux --enable-add-ons 最后,按以上配置執(zhí)行configure和make install,glibc的交叉編譯過(guò)程就算完成了,這里需要指出的是,glibc的安裝路徑設(shè)置為$PREFIXARCH=arm/arm-linux,如果此處設(shè)置不當(dāng),第二次編譯gcc時(shí)可能找不到glibc的頭文件和庫(kù)。

六、第二次編譯gcc

運(yùn)行configure,參數(shù)設(shè)置為--prefix=$PREFIX --target=arm-linux --enable-languages=c,c++。

運(yùn)行make install。

到此為止整個(gè)交叉編譯環(huán)境就完全生成了。

幾點(diǎn)注意事項(xiàng)

第一點(diǎn)、在第一次編譯gcc的時(shí)候可能會(huì)出現(xiàn)找不到stdio.h的錯(cuò)誤,解決辦法是修改gcc/config/arm/t-linux文件,在TARGET_LIBGCC2_CFLAGS變量的設(shè)定中增加-Dinhibit_libc和-D__gthr_posix_h。

Linux怎么編譯c++文件用什么指令

Linux編譯c++源文件使用的命令為g++,操作步驟如下:

用vim命令打開(kāi)一個(gè)文本進(jìn)行編輯,如:

#vim hello.cpp

書(shū)寫(xiě)源代碼內(nèi)容,如:

#include?stdio.h

int?main()

{

printf("hello?world\n"?);

return?0;

}

按ESC鍵,終止輸入,用:wq命令保存,退出。

編譯

#g++ -o hello hello.cpp

-o的意思是用來(lái)指定生成程序的名字

運(yùn)行

#./hello

hello world

#

Objective c中,linux下gcc 編譯頭文件的命令是什么?

預(yù)處理對(duì)頭文件、宏定義等進(jìn)行處理,生成

.i

的默認(rèn)文件,命令:gcc

-E

test.ctest.i

當(dāng)前文章:linux頭文件編譯命令 頭文件 編譯
鏈接地址:http://jinyejixie.com/article28/hejgcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、App開(kāi)發(fā)、網(wǎng)站制作、網(wǎng)站收錄自適應(yīng)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司