linux编译参数说明
① 目前最新版的mysql在linux下源码编译安装的方法。具体参数的含义一并说明
解压后进入目录
./configure 就可以看到可以添加的所有编译参数选项和意义了
② Linux 编译选项
gcc -E source_file.c
-E,只执行到预编译。直接输出预编译结果。gcc -S source_file.c
-S,只执行到源代码到汇编代码的转换,输出汇编代码。gcc -c source_file.c
-c,只执行到编译,输出目标文件。gcc (-E/S/c/) source_file.c -o output_filename
-o, 指定输出文件名,可以配合以上三种标签使用。
-o 参数可以被省略。这种情况下编译器将使用以下默认名称输出:
-E:预编译结果将被输出到标准输出端口(通常是显示器)
-S:生成名为source_file.s的汇编代码
-c:生成名为source_file.o的目标文件。
无标签情况:生成名为a.out的可执行文件。gcc -g source_file.c
-g,生成供调试用的可执行文件,可以在gdb中运行。由于文件中包含了调试信息因此运行效率很低,且文件也大不少。
这里可以用strip命令重新将文件中debug信息删除。这是会发现生成的文件甚至比正常编译的输出更小了,这是因为strip把原先正常编译中的一些额外信息(如函数名之类)也删除了。用法为 strip a.outgcc -s source_file.c
-s, 直接生成与运用strip同样效果的可执行文件(删除了所有符号信息)。gcc -O source_file.c
-O(大写的字母O),编译器对代码进行自动优化编译,输出效率更高的可执行文件。
-O 后面还可以跟上数字指定优化级别,如:
gcc -O2 source_file.c
数字越大,越加优化。但是通常情况下,自动的东西都不是太聪明,太大的优化级别可能会使生成的文件产生一系列的bug。一般可选择2;3会有一定风险。gcc -Wall source_file.c
-W,在编译中开启一些额外的警告(warning)信息。-Wall,将所有的警告信息全开。gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include
-l, 指定所使用到的函数库,本例中链接器会尝试链接名为libxxx.a的函数库。
-L,指定函数库所在的文件夹,本例中链接器会尝试搜索/path/to/lib文件夹。
-I, 指定头文件所在的文件夹,本例中预编译器会尝试搜索/path/to/include文件夹。
③ linux中编译命令怎么写的
楼主说的时GCC么 一个简单的用法,gcc -c 1.c -o 1.o 这是编译过程,其他用法楼主可以网络。
④ 深度linux的arm-linux-gnueabihf-gcc编译参数如何配
一般来说,交叉编译工具是用于在一种架构的主机(例如x86)上,编译另一种主机(例如arm)运行的程序,在这个编译期间,需要用到的头文件/库,往往需要从一个叫目标文件系统(sysroot)的路径开始查找。
sysroot里包含usr,lib,usr/lib usr/include等文件夹结构和必要的头文件和库,你理解为目标机器上的整个文件系统,搬到你这台电脑上,然后作为一个文件夹存在。
交叉编译原则上不能用主机(host)的头文件,
这首先是因为编译器在查找头文件的相对路径时,交叉编译器会配置为查找目标平台架构的位置,和主机的gcc不一样,这也是为什么它去arm-linux-gnueabihf这个目录去寻找的原因。
其次主机和目标机的系统版本有差异,再加上处理器架构的差异,往往有很多兼容性问题,甚至有难以解决的编译错误。
如果一定要用本机的头文件系统来凑合,那么需要把所有的-I都列出来,即不仅需要-I/usr/include,还需要-I/usr/include/xxx,甚至要创建一些文件夹的符号链接指向你主机的这些头文件文件夹。即使这些,往往也未必成功,有些头文件不同的系统架构,会不完全一样甚至缺失。
交叉编译一般无法使用主机的库(so)文件
主机和目标机往往架构不同,库完全不能使用
可能遇到主机和目标机架构相同的情况,比如你在intel64上编译一套运行在intel64位手机的程序,但是库兼容性的问题仍然存在。
最后结论:你这个问题,如果你是为了另一套机器(比如arm开发板编译),那么需要搞一套目标机的文件系统才能顺利编译。
对了,目标文件系统需要编译了python和dev头文件/库,好多嵌入式设备裁剪的很厉害,都不用python。
⑤ linux c 编译加什么参数 可以gdb
Linux C编译命令是gcc,gcc加上一个-g参数,编译出来的程序才能带有gdb的调试信息,才能用gdb调试。不光是gcc编译命令,编译C++程序的g++命令也是用-g选项来表示编译出的程序要带上gdb调试信息。
⑥ Linux gcc 编译参数问题
-l 使用库。
这个库的名字是 pthread 。
POSIX 线程是:线程的 POSIX标准,定义了创建和操纵线程的一套 API。
实现 POSIX 线程标准的库常被称作 Pthreads,一般用于 Unix-like POSIX 系统,如 Linux、 Solaris,但是 Microsoft Windows上的实现也存在,例如, pthreads-w32可以用于支持 Pthread API M的子集 [1]。
以上部分文字出自维基网络,故本回答的文字基于GNU自由文档许可证之条款下发布。
另外抗议网络知道封杀维基网络的连接。
⑦ linux下怎样给编译器设置编译的参数
编译器的参数都是编译的时候执行命令带的。
一般会写在Makefile里,直接敲make
在makefile里面 gcc -l -I -L 等等都是这样加参数的。
推荐你看一本书《linux就该这么学》书中内容非常丰富,LINUX基本问题都可以在书中解决。望采纳!
⑧ linux下安装php编译参数
在Linux下安装PHP,源代码方式安装,总需要配置很多参数。这里列出常用配置参数,并详细用中文解释说明了。给大家一些参考./configure
--prefix=/usr/local/php
php
安装目录
--with-apxs2=/usr/local/apache/bin/apxs
--with-config-file-path=/usr/local/php/etc
指定php.ini位置
--with-MySQL=/usr/local/mysql
mysql安装目录,对mysql的支持
--with-mysqli=/usr/local/mysql/bin/mysql_config
mysqli文件目录,优化支持
--enable-safe-mode
打开安全模式
--enable-ftp
打开ftp的支持
--enable-zip
打开对zip的支持
--with-bz2
打开对bz2文件的支持
--with-jpeg-dir
打开对jpeg图片的支持
--with-png-dir
打开对png图片的支持
--with-freetype-dir
打开对freetype字体库的支持
--without-iconv
关闭iconv函数,种字符集间的转换
--with-libXML-dir
打开libxml2库的支持
--with-xmlrpc
打开xml-rpc的c语言
--with-zlib-dir
打开zlib库的支持
--with-gd
打开gd库的支持
--enable-gd-native-ttf
支持TrueType字符串函数库
--with-curl
打开curl浏览工具的支持
--with-curlwrappers
运用curl工具打开url流
--with-ttf
打开freetype1.*的支持,可以不加了
--with-xsl
打开XSLT
文件支持,扩展了libxml2库
,需要libxslt软件
--with-gettext
打开gnu
的gettext
支持,编码库用到
--with-pear
打开pear命令的支持,php扩展用的
--enable-calendar
打开日历扩展功能
--enable-mbstring
多字节,字符串的支持
--enable-bcmath
打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-sockets
打开
sockets
支持
--enable-exif
图片的元数据支持
--enable-magic-quotes
魔术引用的支持
--disable-rpath
关闭额外的运行库文件
--disable-debug
关闭调试模式
--with-mime-magic=/usr/share/file/magic.mime
魔术头文件位置
CGI方式安装才用的参数
--enable-fpm
打上php-fpm
补丁后才有这个参数,cgi方式安装的启动程序
--enable-fastcgi
支持fastcgi方式启动php
--enable-force-cgi-redirect
同上
,帮助里没有解释
--with-ncurses
支持ncurses
屏幕绘制以及基于文本终端的图形互动功能的动态库
--enable-pcntl
freeTDS需要用到的,可能是链接mssql
才用到
mhash和mcrypt算法的扩展
--with-mcrypt
算法
--with-mhash
算法
--with-gmp
--enable-inline-optimization
--with-openssl
openssl的支持,加密传输时用到的
--enable-dbase
--with-pcre-dir=/usr/local/bin/pcre-config
perl的正则库案安装位置
--disable-dmalloc
--with-gdbm
dba的gdbm支持
--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte
支持zend的多字节
--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap
⑨ linux编译的main函数的参数是怎么传值进来
方法1.
C/C++语言中的main函数,经常带有参数argc,argv,如下:
int main(int argc, char** argv)
int main(int argc, char* argv[])
这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录) 运行命令为:
hello.exe Shiqi Yu
那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。
下面的程序演示argc和argv的使用: