我决定让我的Windows安装后面,我现在运行Debian作为我的默认操作系统.我总是用Windows编写,特别是用Visual Studio编写.我目前正在尝试习惯在linux下编译我的代码.
虽然我仍然有大量的文档要阅读,并且不要指望你们让它对我来说太容易了,但是对于从哪里开始获得一些指示仍然很好.我有一些具体的问题,但随时建议/推荐有关该主题的任何其他内容.
有关创建make文件的建议指南,如何从这个makefile编译(我自己调用g ++,我是否使用'make'?)
看看其他linux软件,他们几乎总是看起来有一个'configure'文件.它到底是做什么用的?它是否仅检查是否安装了所需的库,还是仅仅检查要求?
如何链接库,以及它与我的makefile或g ++参数有何关系?在Windows中我会编译库,包含一些头文件,告诉我的链接器要链接哪些附加的lib文件,并复制一个dll文件.这个过程究竟是如何在linux中运行的?
代码编辑的建议?我目前正在使用nano,我听说过vim和emacs,但不知道它们对彼此有什么好处.还有其他人,为什么我会考虑过前三个中的任何一个?注意:我不是在寻找IDE.
任何帮助,指南和文档的链接(最好是针对初学者的那些)非常感谢!
有关创建make文件的建议指南,如何从这个makefile编译(我自己调用g ++,我是否使用'make'?)
您可以通过调用"make"从makefile构建.在makefile中,使用g ++和ld进行编译和链接.
看看其他linux软件,他们几乎总是看起来有一个'configure'文件.它到底是做什么用的?它是否仅检查是否安装了所需的库,还是仅仅检查要求?
它是一个脚本,通常用于根据用于构建的环境设置各种内容.有时它只是一个基本的shell脚本,有时它会调用Autoconf之类的工具来发现构建时可用的内容."configure"脚本通常也是用户指定要构建或排除的各种可选事物的位置,例如支持实验性功能.
如何链接库,以及它与我的makefile或g ++参数有何关系?在Windows中我会编译库,包含一些头文件,告诉我的链接器要链接哪些附加的lib文件,并复制一个dll文件.这个过程究竟是如何在linux中运行的?
ld是GNU链接器.你可以单独调用它(这是大多数makefile最终会做的),或者你可以让g ++委托给它.传递给g ++和ld的选项决定了在哪里查找包含的标题,要链接的库以及如何输出结果.
代码编辑的建议?我目前正在使用nano,我听说过vim和emacs,但不知道它们对彼此有什么好处.还有其他人,为什么我会考虑过前三个中的任何一个?注意:我不是在寻找IDE.
Vim和Emacs是非常灵活的编辑器,支持大量不同的用法.使用对你最好的方法,不过我建议你可能需要一些最小的东西,比如语法高亮.
只需要注意MandyK的答案.
手动创建make文件通常是构建跨linux发行版/ unix变种的一种非常难以处理的方式.有许多构建系统可用于自动生成make文件,无需make文件即可构建.GNU Autotools,Cmake,Scons,jam等
还要更深入地了解配置.
检查可用的编译器,库,系统架构.
确保您的系统与相应的兼容包列表匹配.
允许您指定命令行参数以专门化您的构建,安装路径,选项包等.
然后,Configure会生成特定于您系统的相应Makefile.
有关创建make文件的建议指南,如何从这个makefile编译(我自己调用g ++,我是否使用'make'?)
我通过阅读GNU Make手册学会了如何编写makefile .
看看其他linux软件,他们几乎总是看起来有一个'configure'文件.它到底是做什么用的?它是否仅检查是否安装了所需的库,还是仅仅检查要求?
配置文件通常与autotools相关联.正如脚本的名称所示,它允许您配置软件.从开发人员的角度来看,这主要意味着设置宏,它确定变量,哪些库可用,等等.它还测试库的可用性.最后,该脚本生成一个GNU Makefile,然后您可以使用它来实际构建和安装该软件.
GNU构建系统只是其中之一.我并不特别喜欢GNU构建系统,因为它往往比其他系统慢,并生成一个丑陋的Makefile.一些比较流行的是CMake,Jam(Boost Jam可能对C++感兴趣)和waf.一些构建系统只是生成Makefile,而其他构建系统提供了一个全新的构建系统.对于简单的项目,手工编写Makefile很容易,但是"依赖性检查"(对于库等)也必须手动完成.
编辑:Brian Gianforcaro也指出了这一点.