精华内容
下载资源
问答
  • Windows 下使用命令行编译C/C++文件

    万次阅读 2016-01-15 19:59:03
    对于一些比较小的测试程序来说,使用IDE编译太费时间,这篇博客简单介绍一下如何在安装了Visual Studio系列的Windows上使用原生的编译工具来编译C/C++。 Visual Studio自带的用于编译C/C++的工具是cl.exe,链接目标...

    对于一些比较小的测试程序来说,使用IDE编译太费时间,这篇博客简单介绍一下如何在安装了Visual Studio系列的Windows上使用原生的编译工具来编译C/C++。

    Visual Studio自带的用于编译C/C++的工具是cl.exe,链接目标文件使用link.exe。

    1,命令行的设置

    如何你打开开始菜单中的Visual Studio文件夹里的命令行,你可以输入这些命令:

    cl.exe link.exe nmake.exe

    可以发现有这些工具的提示。


    但如果在原生的命令行下键入这些命令则没有这些提示。

    我们需要一个用于初始化环境变量的工具,这个工具就在你的Visual Studio安装目录里的VC文件夹中,工具名是vcvarsall.bat。将这个文件拖进命令行中运行后,再次键入命令,可以发现上述命令都能使用了。


    我把这个路径加入到了系统的PATH环境变量中,并且在同一个目录下复制了这个文件,重命名为vsc.bat,这样子每当我开启了一个新的命令提示符只要输入vsc就能使用cl编译了。


    2,cl.exe 的简单使用

    编译 cl source.c

    编译并指定生成文件名 cl 2.c /Femain    /Fe参数,后面的字符就是生成的可执行文件的名称,本例生成了一个main.exe

    只编译代码 cl 2.c /c  只生成目标文件

    3,INCLUDE和LIB路径的设置

    在命令行下可以使用set env_varname 查看具体的环境变量的值,试一下set LIB和set INCLUDE。

    在命令行下,头文件路径由INCLUDE变量指定,链接路径是LIB决定的。

    可以先在环境变量中设置这些值,随后调用vsc.exe脚本来设定cl的执行环境。

    我的环境变量:

    LIB=%MASM_HOME%\lib;%LUA_HOME%\lib;;

    INCLUDE=%MASM_HOME%\include;%LUA_HOME%\include;


    展开全文
  • 在Linux下,Kris是倾向于在终端中使用gcc和g++来编译C/C++的,在Windows下相信很多人都是选择臃肿的VisualStudio,我亦不免如此。但是,我希望在Windows下也能像Linux下一样简洁编程,于是开始了我的Windows下的C/...
    在Linux下,Kris是倾向于在终端中使用gcc和g++来编译C/C++的,在Windows下相信很多人都是选择臃肿的VisualStudio,我亦不免如此。但是,我希望在Windows下也能像Linux下一样简洁编程,于是开始了我的Windows下的C/C++命令行编译环境打造之路。

      几乎没有人会否认集成开发环境 (IDE)(例如,Visual Studio,NetBeans,Eclipse)所提供的能使编程工作变得相当简单的诸多功能。但,还是说说命令行编译的好处吧。

      1、偏爱最简单的生成
      2、希望揭开 IDE 处理源代码文件的方法的秘密
      3、深入了解计算机语言并得到扩展

      事实上,使用命令行工具编译的感觉将证明很有帮助。

      怎么打造Windows下的C/C++命令行编译环境呢?使用Cygwin在Windows上模拟Linux环境,然后利用gcc/g++,显然这也是复杂的折腾。既然我已经装了Visual Studio,那么我应该好好利用其cl编译器。OK,步骤记录如下(这里说明一下,我的环境是Windows 7+ Visual Studio 2010,其中VS 2010安装位置是D盘):

      1、修改环境变量
         在系统属性-高级-环境变量-用户变量中:
        编辑PATH增加cl编译器的路径D:\Program Files\Microsoft Visual Studio10.0\VC\bin以及MSPDB60.DLL的路径D:\Program Files\Microsoft Visual Studio10.0\Common7\IDE,用分号分隔。
         新建变量INCLUDE:D:\Program Files\Microsoft Visual Studio 10.0\VC\include
         新建变量LIB:D:\Program Files\Microsoft Visual Studio 10.0\VC\lib



      2、在命令提示符(CMD)中运行cl,若出错提示LINK : fatal error LNK1104:无法打开文件“kernel32.lib”,则把C:\Program Files\MicrosoftSDKs\Windows\v7.0A\Lib目录下的kernel32.lib拷贝到D:\Program Files\MicrosoftVisual Studio 10.0\VC\lib目录下。

      3、试试效果,在CMD中输入cl main.cpp,其中main.cpp内容如下:

    #include 
    #define _(_) putchar(_); 
    int main(void){int i = 0;_( 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++i)_(++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++i)_(++++++++++++++ 
    i)_(--++i)_(++++++i)_(------ 
    ---------------------------- 
    ---------------------------- 
    ---------------------------- 
    ---------------------------- 
    ----------------i)_(-------- 
    ----------------i)_(++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++++ 
    ++++++++++++++++++++++++++i) 
    _(----------------i)_(++++++ 
    i)_(------------i)_(-------- 
    --------i)_(---------------- 
    ---------------------------- 
    ---------------------------- 
    ---------------------------- 
    ---------------------------- 
    ------i)_(------------------ 
    ---------------------------- 
    i)return i;}


      编译结束之后,运行main.exe结果会是什么呢?Oops,传说中的Hello World 哎!



      附录cl编译器命令的简单用法:
    引用内容 引用内容

    (1)  cl 直接生成exe文件

         多文件编译

         在main,cpp    函数中,包含mysum.cpp , mycheng.cpp文件

         mysum.cpp     中包含mysum函数的方法

         mycheng.cpp   中包含mycheng函数的方法

         执行

         cl  main.cpp

         生成main.exe可执行文件



    main.cpp


    #include 

    #include "mysum.cpp"

    #include "mycheng.cpp"


    void main()

    {

         double dresult=mysum(3.6 , 3.4);

         cout<<"3.6 + 3.4 ="<<

         cout<<"3x6="<<

    }

         




    mysum.cpp

    double mysum(double dx,double dy)

    {

          double dsum=dx+dy;

          return dsum;

    }




    mycheng.cpp

    double dcheng()

    {

        return 3.0*6.0;

    }




    Result:

    3.6 + 3.4 =7

    3x6=18




    (2)  cl 生成obj文件,再link obj 文件,间接生成exe文件

         将函数声明和函数的实现分开,头文件的作用就是函数,类,变量的声明.

         如果在.h文件中加入了函数的实现部分,那么就破坏了文件的声明作用.

         如果这样,那么编译文件时,文件的逻辑顺序混乱.


    //mysum.h


    double mysum(double dx,double dy);


    //mycheng.h

    double dcheng();


    //mysum.cpp

    double mysum(double dx,double dy)

    {

          double dsum=dx+dy;

          return dsum;

    }


    //mycheng.cpp

    double dcheng()

    {

        return 3.0*6.0;

    }


    //main.cpp


    #include 

    #include "mysum.h"

    #include "mycheng.h"


    void main()

    {

         double dresult=mysum(3.6 , 3.4);

         cout<<"3.6 + 3.4 ="<<

         cout<<"3x6="<<

    }


    //

    输入命令顺序

    cl /c main.cpp   

    //生成main.obj



    cl /c mysum.cpp

    //生成   mysum.obj


    cl /c mycheng.cpp

    //生成   mycheng.obj


    link mycheng.obj mysum.obj main.obj

    //生成   mycheng.exe //大家可以看到,采用任何一种files.obj的文件顺序,都可以生成//exe 文件,而生成的exe文件名就是第一个obj文件名。


    /

      通过第二部分,头文件,源文件怎样组织在一起的困惑就解开了。头文件只起到一个声明作用,就像变量声明一样。Link 将files.obj文件链接在一起,就在链接的过程中,就把头文件,源文件的obj组织起来了。
    展开全文
  • 要使用命令行编译C/C++源码,首先得设置一些环境变量 运行VS安装目录下的vcvars32.bat即可。注意需要在命令行下执行该批注里才能生效; C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat ...

    此文章没有什么技术含量,权当一个记录。
    要使用命令行编译C/C++源码,首先得设置一些环境变量

    运行VS安装目录下的vcvars32.bat即可。注意需要在命令行下执行该批注里才能生效;

    C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat


    加入有如下C++源码文件:test.cpp


    #include <iostream>
    
    
    template <class T>
    const T& max(const T& a, const T& b)
    {
    	return a < b ? b : a;
    }
    
    
    int main()
    {
    	std::cout << "this is a test for cmd!" << std::endl;
    	std::cout << "max of 1,2 is : " << max(1, 2) << std::endl;
    	std::cout << std::hex << 3.4 << std::endl;
    	return 0;
    }

    在指定的目录生成目标文件及可执行文件的命令如下:
    cl /EHsc /Fo.\bin\ /Fe.\bin\ test.cpp


    注意:在/Fo后面直接带输出目录的路径,中间不要空格。
    其他参数以后用到再补。
    展开全文
  • 运行环境Windows 版本:win10 1803 x64CUDA 版本:cuda 10.0C/C++ 编译器:VCVisual Studio 版本:VS2017 community注意事项CUDA 10.0 对于操作系统、主机和 Visual Studio 位数有严格要求,对于原生 x86/x64 或是...

    运行环境Windows 版本:win10 1803 x64

    CUDA 版本:cuda 10.0

    C/C++ 编译器:VC

    Visual Studio 版本:VS2017 community

    注意事项

    CUDA 10.0 对于操作系统、主机和 Visual Studio 位数有严格要求,对于原生 x86/x64 或是交叉 x86/x64,其支持性是不一样的,具体支持情况可去 NVIDIA 官网查询 CUDA Toolkit Documentation。 对于现代编程环境来说(现如今是2018年),基本上都是原生 x64,我的电脑亦如此,主机和操作系统都是原生 x64。

    我于 2018 年 11 月开始使用 CUDA,经典资料 《CUDA BY EXAMPLE》 的中文译文版已经是 2010 年出版的了,这 8 年间 CUDA 的发展很迅速,所以这本资料基本上属于很老的书了。这本书中的源代码 README 说明中告诉我们安装好 CUDA 后,直接在命令行使用 nvcc cuda_file.cu 即可直接在命令行编译 .cu 文件,实际上,由于我使用 Windows 环境编程,在今年(2018年)NVIDIA 官网介绍的 Windows 下安装 CUDA 的过程,是一套(CUDA + Microsoft Visual Studio)完整的流程,整个环境安装完成后直接在 VS2017 中按照它的提示建立 CUDA 项目即可,如果这样的话,整个项目的复杂度一下子提升了,并且无法从底层熟悉 CUDA 文件的编写、编译流程,不利于学习,如果这样的话,《CUDA BY EXAMPLE》中的代码也需要重新在 Visual Studio 项目中重构。为了直接在命令行中执行 .cu 文件并生成可执行文件,我做了如下的探索并获得成功。

    配置过程

    将 Visual Studio 的 VC 编译器放在环境变量中

    可能这并不复杂,但要注意的是编译器是用于 x64 的还是 x86 的,如果配置不当,nvcc 指令无法正常运行。对于我的原生 x64 位系统而言,我要将用于 x64 的 VC 编译器放在环境变量中。

    第一步:在系统变量无名称变量 Path 列表中添加如下 2 个位置C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023binHostx64x64

    C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7IDE

    第二步:在系统变量中新建一个变量起名为 LIB,为其添加 3 个位置C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023libx64

    C:Program Files (x86)Windows Kits10Lib10.0.15063.0ucrtx64

    C:Program Files (x86)Windows Kits10Lib10.0.15063.0umx64

    第三步:在系统变量中新建一个变量起名为 INCLUDE,为其添加 2 个位置C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023include

    C:Program Files (x86)Windows Kits10Include10.0.15063.0ucrt

    原则只有一个,既然是原生 x64,各个位置一定要选 x64,否则 nvcc 指令不会正确的生效。其实以上三个步骤的作用其实是让 VC 编译器脱离 Visual Studio IDE 环境生效,也就是说可以让 VC 编译器 cl.exe 在命令行下编译 .cpp 或 .c 文件。因为 nvcc 编译器虽说是 .cu 的编译器,但是它还是要调用 VC 编译器 cl.exe 来对 .cu 文件进行编译,这也就是说为什么 CUDA 离不开 Visual Studio,而在其他平台上,比如 Linux,可能 CUDA 需要调用 gcc 或 g++ 编译器来完成对 .cu 文件的编译(这只是我的猜测,我还没有真正试验过)。

    结语

    经过以上过程,nvcc 指令就可以正确的生效了,当你在任何一个位置写了一个 .cu 文件,然后打开 CMD,使用 nvcc 就可以对它进行编译并生成一个可执行 exe 文件。从而就可以正确的执行《CUDA BY EXAMPLE》中的源代码了。

    展开全文
  • 背景  在DOS界面下,编译 libsvm 资源包中的源代码 svm-toy.cpp,出现错误 error LNK2019: 无法解析外部符号“.......”。出现错误的原因是没有链接支持的...1、DOS命令行中多文件 .cpp 的编译链接 如:svm-toy...
  • 但是,仍有一个问题:如果没有安装Visual Studio,那...是不是就不能编译C/C++文件了呢? 编程的一大问题就是,环境的配置太麻烦, 无论是linux还是windows, 真的很不友好。能不能有一些简单的方法来配置好东西
  • Windows平台通过gcc命令将.c源文件编译成可执行文件 准备 Windows系统电脑 配置好gcc编译环境 验证方式:命令行输入gcc -v,查看是否输出版本信息。 gcc -v 如果出现一大片东西,就是安装成功 编写代码 本文演示...
  • Windows下用VC++命令行编译c(cl.exe)

    千次阅读 2017-08-21 11:13:27
    最近在用Cython引用c函数时,经常需要将c编译为静态数据连接库(.lib文件)。踩了一些坑现在都记下来。搞清楚坏境编译前需要搞清楚自己的...不要用普通的命令行编译,那样很多库和头文件会找不到。 我使用的是VC 2017
  • Windows命令行编译

    2019-10-05 14:59:19
    需要用到命令VirtualStudio的cl命令,运行该命令的时候需要一个mspdb100.dll的动态库,编译源程序时需要用到include目录和lib...命令行生成动态库和静态库可以用下面的命令需要在头文件使用 extern “C” __declspec(...
  • Windows命令行编译运行C/程序 此处运行环境是在Windos下,运行cmd命令进入DOS界面 现在有一段简单C代码(文件名为 Hello.c),用于输出Hello World! 转载于:https://blog.51cto.com/putongren/2083907...
  • Windows命令行编译运行C/C++程序

    万次阅读 2018-07-15 22:19:19
    Windows命令行编译运行C/C++程序此处运行环境是在Windos下,运行cmd命令进入DOS界面现在有一段简单C++代码(文件名为 demo.cpp),用于计算a*b的值123456789#include&lt;iostream&gt;using namespace ...
  • 1.准备 一台具备c开发环境的Windows。 验证方式,命令行输入...在E盘建一个文件夹C,在里面创建一个Hello.c文件,扩展名是c,内容如下: #include &lt;stdio.h&gt; main(){ printf("Hello World...
  • 今天想在windows命令行下试一下如何进行文件编译运行,起初以为敲几个命令就螚搞定了,输入cl命令居然不能运行,提示“cl不是内部命令或者外部命令”,上网查了许久,发现这样的问题介绍的好少,下面就谈谈在...
  • windows命令行编译、运行c程序

    千次阅读 2015-12-23 16:41:52
    windows操作系统中,运行一个c程序,...然后在命令行通过如下命令进行编译(将文件拖入命令行窗口即可生成文件路径): cl D:\theC\hello.c 提示“'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件”。
  • 命令行编译运行CSharp文件 找到csc.exe所在的路径。如我本机上为“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727” 在环境变量里增加变量CSC_HOME,值为以上路径。在PATH变量的值中加入%CSC_HO...
  • 参考文章:... 批处理文件内容: set path=D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin set include=D:\Program Files (x86)\Microsoft Visual...
  • ):gcc可以编译c++文件,也可以编译c文件,但默认是编译c文件的,加-lstdc++表示编译c++文件,即链接c++库,加-lc表示链接c库,默认情况下就是链接c库,所以如果编译c文件可以不加-lc。 本人测试结论(win10):...
  • 有关注我的朋友可能会知道我的C开发环境是:Notepad++与MinGW相结合,即用Notepad++写代码,用MinGW这个工具包中的gcc编译器进行编译。如: 在Notepad++里写代码: 在黑窗口下编译及运行代码: 此处,编译...
  • 复制mysql安装目录下的include,lib 到当前源代码目录 ...最后复制libmysql.dll 和可执行文件在同一路径下即可正常运行 @del /f main.obj main.exe cl /c /I include main.c link /LIBPA...
  • demo.cpp文件的位置是在C:\Users\Administrator\Desktop 目录下 第一步:在DOS界面进入这个...第二步:用g++ 加上文件名,注意要加上文件扩展名,这样会生成一个a.exe的可执行文件Windows默认生成a.exe...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 486
精华内容 194
关键字:

windows命令行编译c文件