请问一下在visual studio C++ 下开发的程序一般能直接在linux 下运行吗?

winematrix 2010-01-21 08:27:53
请问一下在visual studio C++ 下开发的程序一般能直接在linux 下运行吗?
...全文
972 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
OnSmile100 2010-12-29
  • 打赏
  • 举报
回复
不清楚也,我现在也想知道呢
ForestDB 2010-01-22
  • 打赏
  • 举报
回复
用交叉编译,编译器是在Windows下运行的,编译出来的目标代码是Linux的,然后目标程序能在Linux下运行。
在Windows下写好程序,不涉及平台的东西,只有标准库,然后在Linux下重新编译。
nscboy 2010-01-22
  • 打赏
  • 举报
回复
应该能够做到代码层面上的兼容.而不是二进制
IT_lau 2010-01-22
  • 打赏
  • 举报
回复
java还混个屁
cht19790826 2010-01-22
  • 打赏
  • 举报
回复
如果用标准库的话应该可以的!
herman~~ 2010-01-21
  • 打赏
  • 举报
回复
貌似不行吧

拿到linux下用GCC编译一下再运行吧
traceless 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 winematrix 的回复:]
引用楼主 winematrix 的回复:
请问一下在visual studio C++ 下开发的程序一般能直接在linux 下运行吗?


我的问题没有表达清楚。

主要应用是用C++实现算法, 不涉及底层的调用。针对这样的需求,假设我在VC上做了一个程序,一般需要做哪些变动才能在linux下编译通过。
[/Quote]

Faint~~~
那你的意思就是重新编译,不是直接拿去运行了

LZ 那你去编译过没有呀,编译了不对再说。。。
wyjjsn 2010-01-21
  • 打赏
  • 举报
回复
底层库不一样。
winematrix 2010-01-21
  • 打赏
  • 举报
回复

[Quote=引用楼主 winematrix 的回复:]
请问一下在visual studio C++ 下开发的程序一般能直接在linux 下运行吗?
[/Quote]

我的问题没有表达清楚。

主要应用是用C++实现算法, 不涉及底层的调用。针对这样的需求,假设我在VC上做了一个程序,一般需要做哪些变动才能在linux下编译通过。
traceless 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 winematrix 的回复:]
谢谢大家的回复,可能我没有说清楚,我主要是用C++实现算法,不涉及底层的调用。

在windows下有什么C++的编译器可以和linux下的GCC 实现最好的兼容。
[/Quote]

你需要用的是一种叫交叉编译的编译器和方法

google:windows下的交叉编译
traceless 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 dontkissbossass 的回复:]
引用 15 楼 traceless 的回复:
是的,printf确实属于系统调用,依赖于系统。即使是只有一句:int a = 2;也是不能直接拿到
linux下直接运行的。

对于我们常所说的可执行文件,在windows下和linux下分别编译出来的所被“描叙”的规则
是不一样的,他们的文件头格式不一样。当可执行文件被操作系统加载放入内存后,在内存
中的代码映像也是不一样的。

当然如果你编译成纯二进制文件,没有文件头格式,那是另外一回事了。



老大,如果只是用标准,拿VS下的愿代码,应该可以去Linux下GCC编译的吧,毕竟都认标准(除非编译器不支持)
库函数,用跨平台的库,QT,Kurses,等等,应该是可以的
[/Quote]

呵呵 我好像这里说的也没有歧义吧

我没有说源代码的再次编译呀,我说的是在vs编译,然后直接拿去Linux下运行。。。
柯本 2010-01-21
  • 打赏
  • 举报
回复
windows 下也有GCC编译器的
winematrix 2010-01-21
  • 打赏
  • 举报
回复
谢谢大家的回复,可能我没有说清楚,我主要是用C++实现算法,不涉及底层的调用。

在windows下有什么C++的编译器可以和linux下的GCC 实现最好的兼容。
DontKissBossAss 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 traceless 的回复:]
是的,printf确实属于系统调用,依赖于系统。即使是只有一句:int a = 2;也是不能直接拿到
linux下直接运行的。

对于我们常所说的可执行文件,在windows下和linux下分别编译出来的所被“描叙”的规则
是不一样的,他们的文件头格式不一样。当可执行文件被操作系统加载放入内存后,在内存
中的代码映像也是不一样的。

当然如果你编译成纯二进制文件,没有文件头格式,那是另外一回事了。

[/Quote]

老大,如果只是用标准,拿VS下的愿代码,应该可以去Linux下GCC编译的吧,毕竟都认标准(除非编译器不支持)
库函数,用跨平台的库,QT,Kurses,等等,应该是可以的
_JeffreyWu 2010-01-21
  • 打赏
  • 举报
回复
看什么什么项目了.
如果只是个类hello world的,就可以喽
traceless 2010-01-21
  • 打赏
  • 举报
回复
是的,printf确实属于系统调用,依赖于系统。即使是只有一句:int a = 2;也是不能直接拿到
linux下直接运行的。

对于我们常所说的可执行文件,在windows下和linux下分别编译出来的所被“描叙”的规则
是不一样的,他们的文件头格式不一样。当可执行文件被操作系统加载放入内存后,在内存
中的代码映像也是不一样的。

当然如果你编译成纯二进制文件,没有文件头格式,那是另外一回事了。


wangxing221 2010-01-21
  • 打赏
  • 举报
回复
不行,必须重新编译,比如printf啊,在windows下和linux下的实现是不同的,都用到了各自的系统调用。还有new,delete之类的,必须重新编译才能运行,而且前提是标准C/C++,不能有系统的API。
xutaozero21 2010-01-21
  • 打赏
  • 举报
回复
一般直接运行是不行的,除非用wine
s446721902 2010-01-21
  • 打赏
  • 举报
回复
without api
traceless 2010-01-21
  • 打赏
  • 举报
回复
LZ说的是直接运行,不是再次编译。

抛开系统API。就拿一个简单printf("hello,world!\n");来说。。。。

加载更多回复(9)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧