导航:首页 > 源码编译 > 编译器必须开启的选项

编译器必须开启的选项

发布时间:2022-07-20 15:19:02

Ⅰ 急急!c++编译器的选项和调用!

不论是不是用IDE, 和编译结果是控制台APP 还是WIN32APP, 没有关系的。


  1. 为什么要用CL 编译win32程序,不用IDE? 原因何在?

  2. CL编译win32肯定没问题的,具体用法可以参考CL帮助, 我记得很简单的, 给你示例如下:


C:Program Files (x86)Microsoft Visual Studio 11.0VCin>vcvars32.bat

C:Program Files (x86)Microsoft Visual Studio 11.0VCin>cl

Microsoft (R) C/C++ Optimizing Compiler Version 17.00.61030 for x86

Copyright (C) Microsoft Corporation. All rights reserved.


usage: cl [ option... ] filename... [ /link linkoption... ]


┈┈来自:网络香港交流吧, 诚邀大家帮忙关注!!!

Ⅱ 如何设置编译选项 ubuntu

这个就要看你的具体的编译器了。例如:在 UBUNTU 系统下,使用的是 gcc C 语言编译器,那么就一定要遵循 gcc 的编译选项规定。例如:gcc myfile.c,该命令产生的是一个缺省的输出运行文件 a.out;gcc -o myrunfile myfile.c,该命令将会产生一个输出文件为 myrunfile 的运行文件;gcc -c myfile.c,该命令是只产生一个 myfile.o 的中间文件,只编译、不连接。除此之外,你还需要注意 makefile 文件的编写规则,因为该文件才是真正要把所有的源程序的编译选项按照一定的规则写到 makefile 文件中,然后再整体对源程序进行编译、连接。

Ⅲ codeblocks 12.11编译器怎么选择

首先在编译器设置中设置为 vc 2010即可。
但是只安装vc 2010的话,在vc的bin目录中无法找到rc.exe和cdb.exe。
rc.exe可以从C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin目录下找到。你也可以把rc.exe 和rcdll.dll拷贝到vc的bin目录下。
cdb.exe无法找到,你必须下载 Debugging Tools for Windows 。当然这个东西没有单独的包可下载,你可以下载Microsoft Windows SDK for Windows 7 and .NET Framework。这个东西现在只需先下载一个500k的引导程序,然后其他的都不要,只要Debugging Tools for Windows就好了。
安装好的cdb.exe在C:\Program Files\Debugging Tools for Windows (x86)目录下,你需要在compiler and debugger settings中的Toolchain executables选项的additional paths中增加这个目录以便codeblocks查找它。
ok,现在你可以用目前最棒的c++编辑器和最棒的c++编译器了:)
或许你在编译一个带资源文件的工程,而这个资源文件#include <windows.h>时,你又会遇到问题:致命错误 RC1015: 无法打开包含文件 'windows.h'。还是一样在compiler and debugger settings中的search directories设置中为编译、链接、资源编译三个选项加上下面这个查找目录:
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include

Ⅳ 中如下的编译选项什么意思

1.编译目标文件
icc -c -offload-attribute-target=mic -O3 -openmp -std=c99 -DMKL_ILP64 -I/opt/intel/composer_xe_2013_sp1.1.106/mkl/include fft.c -o fft_new.o
2.连接产生可执行文件
icc fft_new.o -openmp -Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -Ip-offload-option,mic,compiler,"-Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013mkl/lib/mic/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_core.a -Wl,--end-group" -o fft_new.out
这里的东西较多,看上去比较复杂。
1.对于第一步,编译出目标文件。这里面的几个编译选项:
-O3 :表示最大可能优化级别。各种循环优化都执行了,并且各种文件级性质也用来改善性能
-openmp:采用了openmp并行编程
-std=c99:ANSI C是89年成为了标准,被ISO认证。之后99年ISO更新了新的C标准。所以-std用来指明编译的C标准。在某些情况下,如果使用GCC,可能在有冲突的时候使用其他标准,比如:-std=gnu89
-DMKL_ILP64:这个是intel提供的编译选项,主要是一个平台的指示。
-I:指定头文件目录
-o:重命名。
2.对于第二步,链接过程。其中几个编译选项:
-openmp:同上
-Wl:Wl选项告诉编译器将后面的参数传递给链接器。
--start-group 和--stop-group:库文件参数传递的开始和结束。
--offload-option,mic:使用offload方式使用协处理器进行运算
转自CSDN社区beglorious的专栏

Ⅳ C++编译器里面的工程选项是什么意思

编译器和链接器的设置选项。
编译器和链接器根据这些选项编译链接,生成可执行文件。

linux 编译选项

  1. gcc -E source_file.c
    -E,只执行到预编译。直接输出预编译结果。

  2. gcc -S source_file.c
    -S,只执行到源代码到汇编代码的转换,输出汇编代码。

  3. gcc -c source_file.c
    -c,只执行到编译,输出目标文件。

  4. gcc (-E/S/c/) source_file.c -o output_filename
    -o, 指定输出文件名,可以配合以上三种标签使用。
    -o 参数可以被省略。这种情况下编译器将使用以下默认名称输出:
    -E:预编译结果将被输出到标准输出端口(通常是显示器)
    -S:生成名为source_file.s的汇编代码
    -c:生成名为source_file.o的目标文件。
    无标签情况:生成名为a.out的可执行文件。

  5. gcc -g source_file.c
    -g,生成供调试用的可执行文件,可以在gdb中运行。由于文件中包含了调试信息因此运行效率很低,且文件也大不少。
    这里可以用strip命令重新将文件中debug信息删除。这是会发现生成的文件甚至比正常编译的输出更小了,这是因为strip把原先正常编译中的一些额外信息(如函数名之类)也删除了。用法为 strip a.out

  6. gcc -s source_file.c
    -s, 直接生成与运用strip同样效果的可执行文件(删除了所有符号信息)。

  7. gcc -O source_file.c
    -O(大写的字母O),编译器对代码进行自动优化编译,输出效率更高的可执行文件。
    -O 后面还可以跟上数字指定优化级别,如:
    gcc -O2 source_file.c
    数字越大,越加优化。但是通常情况下,自动的东西都不是太聪明,太大的优化级别可能会使生成的文件产生一系列的bug。一般可选择2;3会有一定风险。

  8. gcc -Wall source_file.c
    -W,在编译中开启一些额外的警告(warning)信息。-Wall,将所有的警告信息全开。

  9. gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include
    -l, 指定所使用到的函数库,本例中链接器会尝试链接名为libxxx.a的函数库。
    -L,指定函数库所在的文件夹,本例中链接器会尝试搜索/path/to/lib文件夹。
    -I, 指定头文件所在的文件夹,本例中预编译器会尝试搜索/path/to/include文件夹。

Ⅶ VC++6.0编译器中怎么设置编译选项为多线程

/MT

“Project Settings”
选择“C/C++”页面标签,然后在“Category”下拉式清单方块中选择“Code Generation”。在“Use Run-Time Library”下拉式清单方块中,可以看到用于“Release”设定的“Single-Threaded”和用于Debug设定的“Debug Single-Threaded”。将这些分别改为“Multithreaded”和“Debug Multithreaded”。

Ⅷ 请问新装的编译器,编译时出现如下问题,怎么回事需要设置或安装什么Makefile is older than Makefile

.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、java、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC 3.4.0比以前版本更好地支持了C++标准。本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程。

安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。

系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中我采用这个方案安装GCC 3.4.0,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。

按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。

1. 下载

在GCC网站上()或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。

2. 解压

根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):

% tar xzvf gcc-3.4.0.tar.gz
或者
% bzcat gcc-3.4.0.tar.bz2 | tar xvf -

新生成的gcc-3.4.0这个目录被称为源目录,用$表示它。以后在出现$的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。

在$/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。

3. 建立目标目录

目标目录(用$表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是$的子目录。

例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录$是同级目录):

% mkdir gcc-build
% cd gcc-build

以下的操作主要是在目标目录 $ 下进行。

4. 配置

配置的目的是决定将GCC编译器安装到什么地方($),支持什么语言以及指定其它一些选项等。其中,$不能与$或$目录相同。

配置是通过执行$下的configure来完成的。其命令格式为(记得用你的真实路径替换$):

% $/configure --prefix=$ [其它选项]

例如,如果想将GCC 3.4.0安装到/usr/local/gcc-3.4.0目录下,则$就表示这个路径。

在我的机器上,我是这样配置的:

% ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java

将GCC安装在/usr/local/gcc-3.4.0目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。

5. 编译

% make

这是一个漫长的过程。在我的机器上(P4-1.6),这个过程用了50多分钟。

6. 安装

执行下面的命令将编译好的库文件等拷贝到$目录中(根据你设定的路径,可能需要管理员的权限):

% make install

至此,GCC 3.4.0安装过程就完成了。

6. 其它设置

GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在$目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。

6.1 gcc、g++、gcj的设置

要想使用GCC 3.4.0的gcc等命令,简单的方法就是把它的路径$/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。

首先,查看原来的gcc所在的路径:

% which gcc

在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:

% cd /usr/bin
% ln -s $/bin/gcc gcc34
% ln -s $/bin/g++ g++34
% ln -s $/bin/gcj gcj34

这样,就可以分别使用gcc34、g++34、gcj34来调用GCC 3.4.0的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。

6.2 库路径的设置

将$/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。

例如,如果GCC 3.4.0安装在/usr/local/gcc-3.4.0目录下,在RH Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:

setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH

7. 测试

用新的编译命令(gcc34、g++34等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。

8. 根据需要,可以删除或者保留$和$目录。

Ⅸ 如何设置NDK的编译选项

1. 概述
首先回顾一下 Android NDK 开发中,Android.mk 和 Application.mk 各自的职责。
Android.mk,负责配置如下内容:
(1) 模块名(LOCAL_MODULE)
(2) 需要编译的源文件(LOCAL_SRC_FILES)
(3) 依赖的第三方库(LOCAL_STATIC_LIBRARIES,LOCAL_SHARED_LIBRARIES)
(4) 编译/链接选项(LOCAL_LDLIBS、LOCAL_CFLAGS)
Application.mk,负责配置如下内容:
(1) 目标平台的ABI类型(默认值:armeabi)(APP_ABI)
(2) Toolchains(默认值:GCC 4.8)
(3) C++标准库类型(默认值:system)(APP_STL)
(4) release/debug模式(默认值:release)
由此我们可以看到,本文所涉及的编译选项在Android.mk和Application.mk中均有出现,下面我们将一个个详细介绍。
2. APP_ABI
ABI全称是:Application binary interface,即:应用程序二进制接口,它定义了一套规则,允许编译好的二进制目标代码在所有兼容该ABI的操作系统和硬件平台中无需改动就能运行。(具体的定义请参考 网络 或者 维基网络 )
由上述定义可以判断,ABI定义了规则,而具体的实现则是由编译器、CPU、操作系统共同来完成的。不同的CPU芯片(如:ARM、Intel x86、MIPS)支持不同的ABI架构,常见的ABI类型包括:armeabi,armeabi-v7a,x86,x86_64,mips,mips64,arm64-v8a等。
这就是为什么我们编译出来的可以运行于Windows的二进制程序不能运行于Mac OS/Linux/Android平台了,因为CPU芯片和操作系统均不相同,支持的ABI类型也不一样,因此无法识别对方的二进制程序。
而我们所说的“交叉编译”的核心原理也跟这些密切相关,交叉编译,就是使用交叉编译工具,在一个平台上编译生成另一个平台上的二进制可执行程序,为什么可以做到?因为交叉编译工具实现了另一个平台所定义的ABI规则。我们在Windows/Linux平台使用Android NDK交叉编译工具来编译出Android平台的库也是这个道理。
这里给出最新 Android NDK 所支持的ABI类型及区别:

那么,如何指定ABI类型呢?在 Application.mk 文件中添加一行即可:
APP_ABI := armeabi-v7a //只编译armeabi-v7a版本APP_ABI := armeabi armeabi-v7a //同时编译armeabi,armeabi-v7a版本APP_ABI := all //编译所有版本
3. LOCAL_LDLIBS
Android NDK 除了提供了Bionic libc库,还提供了一些其他的库,可以在 Android.mk 文件中通过如下方式添加依赖:
LOCAL_LDLIBS := -lfoo
其中,如下几个库在 Android NDK 编译时就默认链接了,不需要额外添加在 LOCAL_LDLIBS 中:
(1) Bionic libc库
(2) pthread库(-lpthread)
(3) math(-lmath)
(4) C++ support library (-lstdc++)
下面我列了一个表,给出了可以添加到“LOCAL_LDLIBS”中的不同版本的Android NDK所支持的库:

下面是我总结的一些常用的CFLAGS编译选项:
(1)通用的编译选项
-O2 编译优化选项,一般选择O2,兼顾了优化程度与目标大小
-Wall 打开所有编译过程中的Warning
-fPIC 编译位置无关的代码,一般用于编译动态库
-shared 编译动态库
-fopenmp 打开多核并行计算,
-Idir 配置头文件搜索路径,如果有多个-I选项,则路径的搜索先后顺序是从左到右的,即在前面的路径会被选搜索
-nostdinc 该选项指示不要标准路径下的搜索头文件,而只搜索-I选项指定的路径和当前路径。
--sysroot=dir 用dir作为头文件和库文件的逻辑根目录,例如,正常情况下,如果编译器在/usr/include搜索头文件,在/usr/lib下搜索库文件,它将用dir/usr/include和dir/usr/lib替代原来的相应路径。
-llibrary 查找名为library的库进行链接
-Ldir 增加-l选项指定的库文件的搜索路径,即编译器会到dir路径下搜索-l指定的库文件。
-nostdlib 该选项指示链接的时候不要使用标准路径下的库文件
(2) ARM平台相关的编译选项
-marm -mthumb 二选一,指定编译thumb指令集还是arm指令集
-march=name 指定特定的ARM架构,常用的包括:-march=armv6, -march=armv7-a
-mfpu=name 给出目标平台的浮点运算处理器类型,常用的包括:-mfpu=neon,-mfpu=vfpv3-d16
-mfloat-abi=name 给出目标平台的浮点预算ABI,支持的参数包括:“soft”, “softfp” and “hard”

阅读全文

与编译器必须开启的选项相关的资料

热点内容
3d的命令面板不见了 浏览:518
武汉理工大学服务器ip地址 浏览:139
亚马逊云服务器登录 浏览:515
安卓手机如何进行文件处理 浏览:62
mysql执行系统命令 浏览:921
php支持curlhttps 浏览:134
新预算法责任 浏览:435
服务器如何处理5万人同时在线 浏览:242
哈夫曼编码数据压缩 浏览:415
锁定服务器是什么意思 浏览:376
场景检测算法 浏览:608
解压手机软件触屏 浏览:339
方舟pv怎么转服务器 浏览:100
数据挖掘中误差值算法函数 浏览:119
php开发套件 浏览:191
服务器的spi板是什么 浏览:897
解压缩全能王中文密码是什么 浏览:81
javaftp服务器上传文件 浏览:104
算法设计中文版pdf 浏览:82
视频压缩形式怎么改 浏览:369