网站建设方案主要有,公司网站建设哪家正规,北京网站优化体验,网站如何被手机端收录一直用java来写程序#xff0c;java配置好jre路径之后#xff0c;在cmd下编译运行#xff0c;很方便。 刚好要给一个舍友改下C程序#xff0c;想到可不可以像java一样在环境变量里配置好C的编译路径呢#xff1f; 于是上网搜了一下#xff0c;得到如下结果#xff1a; 一… 一直用java来写程序java配置好jre路径之后在cmd下编译运行很方便。 刚好要给一个舍友改下C程序想到可不可以像java一样在环境变量里配置好C的编译路径呢 于是上网搜了一下得到如下结果 一、如果装有VC那就简单了因为VC带有C的编译器可以将此路径设置进环境变量。 Windows系统下编译连接源代码方法 cl -GX test.c -GX 启动同步异常处理 上面的命令会产生可执行程序test.exe 在命令行中直接输入test.exe 就可运行该程序 Tips: 一、cmd中键入cl提示不认识cl命令则由于无法找到cl.exe程序。解决方法如下 添加系统变量(Path)这样我的电脑-属性-高级-环境变量-系统变量在path中添加 C:/Program Files/Microsoft Visual Studio 9.0/VC/bin。 注意 1、结尾最后用“”隔开 2、如果你的Microsoft Visual Studio 低于9.0版本或高于9.0版需要修改上面的路径名称。 二、cmd中键入cl执行编译时会出现mspdb80.dll无法找到的情况是因为VC/Bin/下没有 “msobj80.dll, mspdb80.dll,mspdbcore.dll,mspdbsrv.exe”这四个文件解决的方法 1直接从Common7/IDE/下复制这四个文件到VC/Bin/下即可解决 2添加系统变量(Path)这样我的电脑-属性-高级-环境变量-系统变量在path中添加 C:/Program Files/Microsoft Visual Studio 8/Common7/IDE注意结尾最后用“”隔开 这样在用cl编译就不会出现mspdb80.dll文件找不到的错误了。 三、如果你在编译过程中出现一下错误 1、fatal error C1034: stdio.h: no include path set 2、fatal error LNK1104: cannot open file kernel32.lib 请在我的电脑-属性-高级-环境变量-系统变量中新建系统变量LIB、INCLUDE并设置它们的值为 LIBC:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib;C:/Program Files/Microsoft SDKs/Windows/v5.0/Lib;C:/Program Files/Microsoft Visual Studio 9.0/VC/lib INCLUDEC:/Program Files/Microsoft Visual Studio 9.0/VC/include Linux系统下编译连接源代码的方法 gcc -g -c test.c -o test 只生成目标文件.obj文件没有生成可执行文件也就是说test是.obj文件 gcc -g test.c -o test 生成可执行文件可以通过./test运行程序 -g:生成调试信息。GNU 调试器可利用该信息。 -c:只编译并生成目标文件。(没有中间文件生成和可执行文件如列表文件、可执行文件) -o:设置生成的可执行程序的名字为test 上面的命令会产生可执行程序test 在Terminal中输入./test 就可以运行该程序了。 操作步骤如下 1.在命令行下先运行vcvars32.bat此文件在VC安装目录/Bin文件夹里其中设置了环境变量和路径等信息。或者手动修改环境变量 path你安装VS的路径/VC98/Bin lib你安装VS的路径/VC98/lib;你安装VS的路径/VC98/MFC/lib include你安装VS的路径/VC98/include;你安装VS的路径/VC98/MFC/include;你安装VS的路径/VC98/ATL/lib 2.然后直接用CL编译器编译C程序如CL /GX /MT zx.cpp。 CL经常使用的选项为 多线程dll(/MD)-动态链接不包含运行时库文件 多线程(/MT)-静态链接包含运行时库文件 附CL 参数即编译选项如下 -优化- /O1 最小化空间 /Op[-] 改善浮点数一致性 /O2 最大化速度 /Os 优选代码空间 /Oa 假设没有别名 /Ot 优选代码速度 /Obn 内联展开(默认 n0) /Ow 假设交叉函数别名 /Od 禁用优化(默认值) /Ox 最大化选项。(/Ogityb2 /Gs) /Og 启用全局优化 /Oy[-] 启用框架指针省略 /Oi 启用内部函数 -代码生成- /G3 为 80386 进行优化 /Gh 启用 _penter 函数调用 /G4 为 80486 进行优化 /GH 启用 _pexit 函数调用 /G5 为 Pentium 进行优化 /GR[-] 启用 C RTTI /G6 对 PPro、P-II、P-III 进行优化 /GX[-] 启用 C EH (与 /EHsc 相同) /G7 对 Pentium 4 或 Athlon 进行优化 /EHs 启用 C EH (没有 SEH 异常) /GB 为混合模型进行优化(默认) /EHa 启用 C EH(w/ SEH 异常) /Gd __cdecl 调用约定 /EHc extern C 默认为 nothrow /Gr __fastcall 调用约定 /GT 生成纤维安全 TLS 访问 /Gz __stdcall 调用约定 /Gm[-] 启用最小重新生成 /GA 为 Windows 应用程序进行优化 /GL[-] 启用链接时代码生成 /Gf 启用字符串池 /QIfdiv[-] 启用 Pentium FDIV 修复 /GF 启用只读字符串池 /QI0f[-] 启用 Pentium 0x0f 修复 /Gy 分隔链接器函数 /QIfist[-] 使用 FIST 而不是 ftol() /GZ 启用堆栈检查(/RTCs) /RTC1 启用快速检查(/RTCsu) /Ge 对所有函数强制堆栈检查 /RTCc 转换为较小的类型检查 /Gs[num] 控制堆栈检查调用 /RTCs 堆栈帧运行时检查 /GS 启用安全检查 /RTCu 未初始化的本地用法检查 /clr[:noAssembly] 为公共语言运行库编译 noAssembly - 不产生程序集 /arch:SSE|SSE2 CPU 结构的最低要求以下内容之一: SSE - 启用支持 SSE 的 CPU 可用的指令 SSE2 - 启用支持 SSE2 的 CPU 可用的指令 -输出文件- /Fa[file] 命名程序集列表文件 /Fofile 命名对象文件 /FA[sc] 配置程序集列表 /Fpfile 命名预编译头文件 /Fd[file] 命名 .PDB 文件 /Fr[file] 命名源浏览器文件 /Fefile 命名可执行文件 /FR[file] 命名扩展 .SBR 文件 /Fm[file] 命名映射文件 -预处理器- /AIdir 添加到程序集搜索路径 /Fx 将插入的代码合并到文件 /FUfile 强制使用程序集/模块 /FIfile 命名强制包含文件 /C 不抽出注释 /Uname 移除预定义宏 /Dname{|#}text 定义宏 /u 移除所有预定义宏 /E 预处理到 stdout /Idir 添加到包含搜索路径 /EP 预处理到 stdout没有 #line /X 忽略“标准位置” /P 预处理到文件 -语言- /Zi 启用调试信息 /Ze 启用扩展(默认) /ZI 启用“编辑并继续”调试信息 /Zl 省略 .OBJ 中的默认库名 /Z7 启用旧式调试信息 /Zg 生成函数原型 /Zd 仅有行号调试信息 /Zs 只进行语法检查 /Zp[n] 在 n 字节边界上包装结构 /vd{0|1} 禁用/启用 vtordisp /Za 禁用扩展(暗指 /Op) /vmx 指向成员的指针类型 /Zc:arg1[,arg2] C 语言一致性这里的参数可以是: forScope - 对范围规则强制使用标准 C wchar_t - wchar_t 是本机类型不是 typedef - 杂项 - file 选项响应文件 /won 发出一次警告 n /?, /help 打印此帮助消息 /wln 为 n 设置警告等级 1-4 /c 只编译不链接 /Wn 设置警告等级(默认 n1) /Hnum 最大外部名称长度 /Wall 启用所有警告 /J 默认 char 类型是 unsigned /Wp64 启用 64 位端口定位警告 /nologo 取消显示版权消息 /WX 将警告视为错误 /showIncludes 显示包含文件名 /WL 启用单行诊断 /Tcsource file 将文件编译为 .c /Yc[file] 创建 .PCH 文件 /Tpsource file 将文件编译为 .cpp /Yd 将调试信息放在每个 .OBJ 中 /TC 将所有文件编译为 .c /Yl[sym] 为调试库插入 .PCH 引用 /TP 将所有文件编译为 .cpp /Yu[file] 使用 .PCH 文件 /Vstring 设置版本字符串 /YX[file] 自动 .PCH /w 禁用所有警告 /Y- 禁用所有 PCH 选项 /wdn 禁用警告 n /Zmn 最大内存分配(默认为 %) /wen 将警告 n 视为错误 -链接- /MD 与 MSVCRT.LIB 链接 /MDd 与 MSVCRTD.LIB 调试库链接 /ML 与 LIBC.LIB 链接 /MLd 与 LIBCD.LIB 调试库链接 /MT 与 LIBCMT.LIB 链接 /MTd 与 LIBCMTD.LIB 调试库链接 /LD 创建 .DLL /Fnum 设置堆栈大小 /LDd 创建 .DLL 调试库 /link [链接器选项和库] 关于链接时参数的说明 VC项目属性→配置属性→C/C→代码生成→运行时库 可以采用的方式有多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。 Reusable Library Switch Library Macro(s) Defined Single Threaded /ML LIBC (none) Static MultiThread /MT LIBCMT _MT Dynamic Link (DLL) /MD MSVCRT _MT and _DLL Debug Single Threaded /MLd LIBCD _DEBUG Debug Static MultiThread /MTd LIBCMTD _DEBUG and _MT Debug Dynamic Link (DLL) /MDd MSVCRTD _DEBUG, _MT, and _DLL 其中以小写“d”结尾的选项表示的DEBUG版本的没有“d”的为RELEASE版本。大型项目中必须要求所有组件和第三方库的运行时库是统一的否则将会出现LNK2005井喷。 单线程运行时库选项/ML和/MLd在VS2003以后就被废了。 /MT和/MTd表示采用多线程CRT库的静态lib版本。该选项会在编译时将运行时库以静态lib的形式完全嵌入。该选项生成的可执行文件运行时不需要运行时库dll的参加会获得轻微的性能提升但最终生成的二进制代码因链入庞大的运行时库实现而变得非常臃肿。当某项目以静态链接库的形式嵌入到多个项目则可能造成运行时库的内存管理有多份最终将导致致命的“Invalid Address specified to RtlValidateHeap”问题。另外托管C和CLI中不再支持/MT和/MTd选项。 /MD和/MDd表示采用多线程CRT库的动态dll版本会使应用程序使用运行时库特定版本的多线程DLL。链接时将按照传统VC链接dll的方式将运行时库MSVCRxx.DLL的导入库MSVCRT.lib链接在运行时要求安装了相应版本的VC运行时库可再发行组件包当然把这些运行时库dll放在应用程序目录下也是可以的。 因/MD和/MDd方式不会将运行时库链接到可执行文件内部可有效减少可执行文件尺寸。当多项目以MD方式运作时其内部会采用同一个堆内存管理将被简化跨模块内存管理问题也能得到缓解。 结论/MD和/MDd将是潮流所趋/ML和/MLd方式请及时放弃/MT和/MTd在非必要时最好也不要采用了。 二、单独下载gcc程序同样的设置环境变量就可以了。