如何在Linux上编译Windows Visual C代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在Linux上编译Windows Visual C代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2830字,纯文字阅读大概需要5分钟。
内容图文
注意:这个问题的目的是找出是否存在一种在VC中为Windows开发的标准方法,并将该代码平滑地移植到Linux系统上(意思是尽可能少地编写代码),以便它可以编译成可执行文件并运行.
根据我收到的答案,我可以看到存在误解.因此,我打算将这个问题分成两个单独的问题.一个是我原来的(修订后的问题),另一个是我的具体问题以及如何解决它. (我会在发布后添加这个问题的链接).
注意:我对C很新,并使用makefile进行编译.
我一直在创建一个可以在Linux服务器上运行的C程序,到目前为止我一直在使用Visual Studio(Window的当前版本)来编写所有代码.为了安全起见,在我开始编写程序之前,我尝试在VC中创建一些基本的C文件,将它们传输到我的服务器,然后用g编译它们并运行可执行文件.一切顺利,所以我想:
“嘿,我可以继续编写我的整个程序,按照相同的流程,一切都会好的!”
显然,我错了,这就是我在这里的原因.
当我运行我的makefile时,我得到了几十个错误,我不确定如何处理这种情况.大量的错误消息似乎暗示了我使用向量(当然,在使用VC编译时运行正常).
我看过以下问题:
How to compile in Visual Studio 2010 for Linux
Port Visual Studio C++ to Linux
Compiling Visual C++ code in Linux?
但我真的找不到直接解决我的问题的方法(例如我宁愿避免在Linux平台上安装VC而只是在那里工作).
我也调查了(并尝试使用)wineg++,但它在编译时似乎没有任何改变.
我该怎么办这个问题?
含义:通常的做法是在Windows VC上开发然后移植到Linux?如果是这样,是否有确保一切顺利的标准方法?或者只是了解Linux上的编译器如何正常工作和编码,以便不会发生错误?
最好是一种解决方案,允许我在Windows上继续开发,并在完成后简单地将所有内容移植到Linux上.如果可能的话,尝试尽可能简单地做出任何答案,当涉及到大部分内容时,我仍然非常业余.
编辑:我还想提一下,我并没有真正使用任何疯狂的库.只是math.h和矢量.
一些错误的例子是:
使用一些双精度初始化矢量:
相应的编译错误:
解决方法:
只要您以可移植的方式编写代码(不使用OS /编译器特定功能,如windows.h或特定的编译器扩展)并使用可移植库,它就应该使用Visual Studio和GCC进行编译.
事情是,虽然他们都工作,但他们这样做有点不同.大多数情况下,它可能需要显式覆盖,这是不同的默认设置.举个例子:
> Visual Studio总是根据他们支持的最新C标准进行编译,并且不允许您使用不同的标准.在最新版本中,我认为它几乎是C 11和C 14之间的混合.
> GCC有一个默认设置,但允许您更改用于编译的标准.用.编译
g++ example.cpp
使用默认标准(版本6之前的GCC的C 98标准和版本6之后的GCC的C 14).您的代码似乎失败,因为您使用C 11功能,但您的编译器默认使用较旧的标准.
g++ -std=c++11 example.cpp
应该通过明确指定标准来使一些错误消失,在本例中为C 11标准.
这些只是编译器选择的不同权衡.只支持一个标准可能会使支持和修复错误更容易,因为您没有可能具有不同错误的不同编译器标准版本组合.能够更改用于编译的标准,可以更容易地测试程序是否适用于新标准或者您需要修改的更改等等…
一般来说,GCC更小,如果你想要它做一些额外的东西,你明确指定它.我推荐使用类似的东西:
g++ -Wall -Wextra -pedantic -std=c++11 example.cpp
使用-Wall和-Wextra给出一个合适的警告级别,以-pedantic开始告诉你,如果你试图使用一个有效的编译器扩展,但会使你的代码不那么便携,最后但并非最不重要的是你应该总是指定标准你想使用它,-std = c 11,-std = c 14或更旧-std = c 98.
内容总结
以上是互联网集市为您收集整理的如何在Linux上编译Windows Visual C代码全部内容,希望文章能够帮你解决如何在Linux上编译Windows Visual C代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。