网站首页 > 文章中心 > 其它

linux头文件编译命令

作者:小编 更新时间:2023-09-23 18:48:33 浏览量:334人看过

linux编译安装命令

Linux编译安装相关命令,下面以Linux安装MySQL工具为例进行说明,代码如下:

linux头文件编译命令-图1

#连接符这是放入后台,是前一个正确执行,才会执行后一个

#Linux编译安装流程./configure?make?make?install(默认目录安装)

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

linux下 头文件,该怎么处理

在Linux下面,如果要编译一个C语言头文件,,要使用GNU的gcc编译器,以一个实例来说明如何使用gcc编译器:

假设有下面一个非常简单的源程序(hello.c):

int main(int argc,char **argv)

{

printf("Hello Linux\n");

}

要编译这个程序,只要在命令行下执行:

gcc -o hello hello.c

gcc 编译器就会生成一个hello的可执行文件;执行./hello,就可以看到程序编译后的输出结果"Hello Linux".

关于在linux下用gcc编译头文件的问题.

我用一个例子来告诉你怎么样在 C++ 里使用C的头文件/函数.

比方说我有一个C的头文件叫 c.h, C的源码文件叫 c.c,内容分别是

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;

现在我想在c++中使用c.c中提供的函数test(),我的c++文件名字叫 a.cpp,那么里面跟C有关的部分就要用 extern "C" {} 大括号括起来,看看我的

a.cpp:

#include iostream

using namespace std;

extern "C"

int main()

b = test(b);

cout"b = "bendl;

return 0;

看到了吧,#include "c.h" 被 extern "C" {}括起来了.

然后是如何编译,先把C文件编出目标文件(.o)来

gcc -c c.c

你会看到生成了 c.o,其实,有目标文件就够了,如果你一定要做成(静态/动态)库文件,也是可以的,不过我这里就不深入了,做成库和直接用目标文件对解决你的问题没有任何区别.

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

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

看到了吧,我在编译 a.cpp 的时候把C生成的 c.o也加上了. 然后生成 可执行的 hello, 运行

./hello

就可以看到

先编译出目标文件

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

这时候你应该看到有 a.o b.o c.o了

然后创建库文件

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

这三个目标文件就放入 libtest.a 这个静态库中了,然后编译C++程序 (你的C++程序应该已经按照我前面说的用 extern "C" 把C的接口都括起来了),假定你的 libtest.a 放在 /home/aaa/lib下

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

就会生成可执行文件 my.exe了.

如何使用linux交叉编译

采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行.

linux下的交叉编译环境重要包括以下几个部分:

①对目标系统的编译器gcc

交叉编译环境的建立步骤

第二段:编译binutils 首先运行configure文件,并使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,然后执行make install.

第三段:配置linux内核头文件

配置完成之后,需要将内核头文件拷贝到安装目录: cp -dR include/asm-arm $PREFIX/arm-linux/include/asm cp -dR include/linux $PREFIX/arm-linux/include/linux

第四段:第一次编译gcc

首先运行configure文件,使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,并使用--disable-threads、--disable-shared、--enable-languages=c参数,然后执行make install.这一步将生成一个最简的gcc.由于编译整个gcc是需要目标机的glibc库的,它现在还不存在,所以呢需要首先生成一个最简的gcc,它只需要具备编译目标机glibc库的能力即可.

第五段:交叉编译glibc

这一步骤生成的代码是针对目标机cpu的,所以呢它属于一个交叉编译过程.该过程要用到linux内核头文件,默认路径为$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其内核头文件所在的include目录;或者,也可以在此时此刻呢要执行的configure命令中使用--with-headers参数指定linux内核头文件的实际路径.

configure的运行参数设置如下(因为是交叉编译,所以要将编译器变量CC设为arm-linux-gcc): CC=arm-linux-gcc ./configure --prefix=$PREFIX/arm-linux --host=arm-linux --enable-add-ons 最后,按以上配置执行configure和make install,glibc的交叉编译过程就算完成了,这里需要指出的是,glibc的安装路径设置为$PREFIXARCH=arm/arm-linux,如果此处设置不当,第二次编译gcc时可能找不到glibc的头文件和库.

第六段:第二次编译gcc

运行configure,参数设置为--prefix=$PREFIX --target=arm-linux --enable-languages=c,c++.

运行make install.

到此为止整个交叉编译环境就完全生成了.

几点注意事项

Linux怎么编译c++文件用什么指令

Linux编译c++源文件使用的命令为g++,操作步骤如下:

#vim hello.cpp

书写源代码内容,如:

#include?stdio.h

int?main()

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

return?0;

按ESC键,终止输入,用:wq命令保存,退出.

编译

#g++ -o hello hello.cpp

-o的意思是用来指定生成程序的名字

运行

#./hello

hello world

#

Objective c中,linux下gcc 编译头文件的命令是什么?

预处理对头文件、宏定义等进行处理,生成

.i

的默认文件,命令:gcc

-E

test.ctest.i

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章