linux 编译执行,linux打开软件命令

linux 如何运行编译程序

gcc有多达100多个参数,现介绍常用的几个。如果对其他参数也有兴趣,可以参考:man gcc

预先处理选项

-E:只对文件进行预处理,输出结果到标准输出

-C:告诉预处理器不要丢弃注释.配合`-E‘选项使用.-P:告诉预处理器不要产生`#line'命令.配合`-E'选项使用.

-v:显示正在使用的gcc的版本

常用编译选项

-c:将源程序编译为目标代码但并不做链接的工作,不生成最终的可执行文件,只生成一个与源文件文件名相同的以.o为后缀的目标文件。

-S:将远程序编译为一个后缀为.s的汇编语言文件,不会生成可执行文件

-x:强制编译器用指定的语言编译器来编译某个源文件

gcc-x c++ test.c表示强制用C++编译器来编译c程序

-static:强制连接静态库,运行时不依赖动态库

-share:编译时尽量使用动态库

-o:指定生成的可执行文件名,如果没有该选项,如果生成可执行文件,默认文件名为a.out

编译路径选项

-i:指定特定头文件

gcc–c-i/home/zry/test.h test.c

-I<DIR>:依赖选项,指定头文件路径

Linux下大多数函数将头文件放在/usr/include目录下,如果需要指定其他路径,可以使用该选项

gcc–I/home/zry/include–c test.c添加/home/zry/include到查找路径

-L<DIR>:指定库文件搜素路径,用法同上

-l<库名>:指定特定库文件

gcc–lapp–c test.c

Linux的库文件有一个约定,即以lib开头,-lapp表示连接libapp.so库文件

目标生成选项

-shared:生成动态库

gcc–shared libtest.so-i/home/zry/test.h test.c

生成静态库需要ar命令,后面讲解

-fPIC:生成可用于动态库的位置独立代码。所有的内部寻址均通过全局偏移表完成。

-ansi:支持符合ANSI标准的C程序.

该选项就会关闭GNU C中某些不兼容ANSI C的特性,例如asm, inline和 typeof关键字以及诸如unix和vax这些表明当前系统类型的预定义宏。

__asm__, __extension__, __inline__和__typeof__仍然有效

使用`-ansi'选项的时候,预处理器会预定义一个__STRICT_ANSI__宏.有些头文件关注此宏,以避免声明某些函数,或者避免定义某些宏,这些函数和宏不被ANSI标准调用;这样就不会干扰在其他地方使用这些名字的程序了.

fno-asm:此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。

-fno-strict-prototype:只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数.而gcc无论是否使用这个参数,都将对没有带参数的函数,认为没有显式说明的类型

-fthis-is-varialble:就是向传统c++看齐,可以使用this当一般变量使用

-fcond-mismatch:允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型

-funsigned-char:

-fno-signed-char:

-fsigned-char:

-fno-unsigned-char:

这四个参数是对char类型进行设置,将char类型设置unsigned char(前两个参数)或者 signed char(后两个参数)

-imacros file:将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中

-Dmacro:相当于C语言中的#define macro

-Dmacro=defn:相当于C语言中的#define macro=defn

-Umacro:相当于C语言中的#undef macro

-undef:取消对任何非标准宏的定义

-M:生成文件关联的信息。包含目标文件所依赖的所有源代码

-MM:和M一样,但是它将忽略由#include<file>造成的依赖关系。

-MD:-M相同,但是输出将导入到.d的文件里面

-MMD:和-MM相同,但是输出将导入到.d的文件里面

警告选项

fsyntax-only:检查程序中的语法错误,但是不产生输出信息.

-w:禁止所有警告信息.

-Wno-import:禁止所有关于#import的警告信息.

-pedantic:打开完全遵从ANSI C标准所需的全部警告诊断;拒绝接受采用了被禁止的语法扩展的程序.

-Werror:将所有警告转换为错误

Werror选项要求GCC将所有警告当作错误进行处理。

-Wall:显示所有警告信息

linux编译选项lddlinux编译选项

linux下怎样编译opencascade?

以下是在Linux上编译OpenCASCADE的步骤:

1、下载OpenCASCADE的源代码包,并解压到一个目录中。

2、打开终端,进入源代码目录。

3、创建一个新的目录用于构建OpenCASCADE。

4、在终端中执行以下命令,进入新建的构建目录:

cdbuild

5、在构建目录中执行以下命令,配置OpenCASCADE的编译选项:

cmake../path/to/opencascade/sources

其中,../path/to/opencascade/sources是指OpenCASCADE源代码所在的路径。

6、执行以下命令,编译OpenCASCADE:

make-j4

其中,-j4参数表示使用4个线程并行编译,可以根据实际情况进行调整。

7、执行以下命令,安装编译好的OpenCASCADE库文件:

sudomakeinstall

8、等待编译和安装完成后,即可在系统中使用OpenCASCADE库文件。

请注意,OpenCASCADE的编译过程可能会因操作系统版本、编译器版本、依赖库版本等因素而有所差异。因此,在编译前,请先查看OpenCASCADE的文档或官方网站,了解相关的系统和软件要求。

ubuntu怎么编译出来exe文件?

绝大多数linux上需要源码安装的程序可以通过./configure;make;makeinstall这三步来编译生成exe二进制可执行文件,下面详细说明

1.利用ubuntu包管理器下载编译环境各种依赖,通过下面语句安装build-essential和checkinstall

命令:sudoapt-getinstallbuild-essentialcheckinstall

2.解压某需要生成exe主程序的源码包,例sample.tar.gz,用下列语句实现:tar-xzvfsample.tar.gz

3.进入解压缩后的文件的主目录下,进入下面次级目录cd/pathhere并执行这个最重要的脚本./configure

4.执行编译程序make

5.最后执行编译安装sudomakeinstall,完成

linux怎么编译c的源程序的?gcc,编译命令是什么?

编译方法:格式gcc常用的选项最简单的是:gcchello.c默认的情况下将生成a.out的可执行性文件,只需要在终端上输入./a.out就可以看到执行的结果,如果你想指定生成目标文件的名字那么你可以加上-o选项,命令如下:gcc-ohellohello.

c命令:gcc-chellohello.c扩展资料:gcc命令的基本用法gcc其中,filenames为文件名;options为编译选项。

当不使用任何编译选项编译hello.c时,gcc将会自动编译产生一个a.out的可执行文件:#lshello.c#gcchello.c#lsa.outhello.c执行:#./a.outHello,World!使用-o编译选择,可以为编译后的文件指定一个名字:#lsa.outhello.c#gcchello.c-ohello#lsa.outhellohello.c执行:#./helloHello,World!注意:使用-o选项时,-o后面必须跟一个文件名,即:-ooutfile。为了便于描述后面的选项,删除hello和a.out可执行文件。

“linux”怎么编译c的源程序的?“gcc”编译命令是什么?

格式gcc介绍一些常用的选项:最简单的是:gcchello.c默认的情况下将生成a.out的可执行性文件,你只需要在终端上输入./a.out就可以看到执行的结果.如果你想指定生成目标文件的名字那么你可以加上-o选项,命令如下:gcc-ohellohello.c命令如下:gcc-chellohello.c

Windows下怎样编译出可在Linux上执行的程序?

1、可以安装cygwin,Cygwin是一个在windows平台上运行的类UNIX模拟环境,是cygnussolutions公司开发的自由软件,搜索官网下载即可,下载完成,安装的时候注意记得安装相关语言的编译器、解释器,在cygwin中生成Linux可执行文件。

2、可以安装vmware、virtualpc等虚拟机,在虚拟机里安装linux系统,然后在linux系统中编译相应的源码,生成linux上的可执行文件。

请问运行于不同CPU构架的linux,它们的软件可以通用吗

以上回答中jiangtao9999的比较靠谱儿。

是这样:

1、Linux下的软件几乎都是c语言的;

2、如果你学过C语言,找找书应该有这样一个概念:ANSI C,这个是一个C语言的标准,比如printf这个函数就属于标准库(也就是符合ANSI标准的)函数

3、假如你编写了一个软件,代码中仅仅包含ANSI的库函数,那么没有问题,只要是支持C语言的平台,都能正常运行,即:编写了一个简简单单的helloworld到哪里编译运行都没有问题。

【前提是:】编译再运行,不编译就运行是不可以的,比如printf函数在各种架构上的实现方式是不可能相同的,所以需要在arm的编译器上再编译一遍才可以。否则运行不了。

有的软件平台可以不用编译,直接运行,比如jiangtao9999说的java、Python什么的,Java可以实现“一次编译,满哪运行”什么的,而Python则是有了.py源代码就可以无敌了,使用的时候不用你去执行编译命令,直接执行即可。arm上实现这两种语言都是很容易的——下载源代码、编译、安装即可。

4、不同架构的Linux平台都要实现一个编译器,这是很重要的,有了编译器,才可以从源代码安装软件。

5、使用非ANSI库中的函数需要该Linux包含这个函数的实现,否则,编译后的连接将不通过,比如一个软件使用了GTK来实现图形用户界面,那么就需要系统中包含了gtk的库函数,这就叫依赖,安装软件,首先要解决依赖,依赖有时候解决起来很麻烦,所以软件开发过程中尽量减少依赖,这样方便安装。

6、tar.gz这种格式的软件包有可能是源代码,有可能是可执行文件(这是因为那只是一个压缩包,内容是什么不一定),这两者不同。很多软件以tar.gz格式发布源代码,而qq的Linux版本属于可执行文件,在几乎所有Linux平台下面直接双击或者通过命令就可以使用。

7、如果你使用的是rpm包或者deb包或者是tar.gz文件包中可执行文件形式的软件包,而不是tar.gz这种形式的源代码,你需要使用相应的软件包管理器安装就行,

但这不意味着arm版本的deb和x86版本的deb文件是通用的,你能这样用是因为所有的使用x86机器的软件经过编译或者交叉编译(在arm平台上编译x86平台上的软件就叫交叉编译)以后,运行于几乎完全一样的统一的平台上,实现软件和系统的无缝对接,方便了用户——一方面可以不用浪费编译的时间,主要还是方便了那些不会编译软件的人。

8、我也正在学习Linux,所以很多地方不太对,这只是我现在的一些理解。jiangtao9999说的主要是和汇编有关,如果代码的实现主要是在c语言水平,那么就会由编译器屏蔽掉指令集和寄存器什么的。

9、要是在百度回答的答案能改改就好了,这样错误就会少一点。

10、重新罗嗦一遍:

1在不重新编译源代码的情况下,x86下linux的软件不可以运行于arm构架的Linux,即使运行也会奇卡。

2和在编译是否时为X86的CPU构架优化了编译无关。(把我问迷糊了,估计是无关)

3软件在编译时是否为X86的CPU构架而优化主要看作者了,资料可以参看

4和不同的安装包格式有一定关系

5tar.gz格式的软件包不能保证在不同架构的Linux都能运行

6在arm的linux安装时解决依赖以后,乳沟编译通过基本是没什么问题的

7不是所有源代码在arm和x86下编译一下就可以了,还需要做一些努力

8有源代码可以对遇到的不通过的问题逐一解决,理论上可以实现所有软件都能运行

9重新编译过程中如果遇到依赖问题需要逐一解决

阅读剩余
THE END