从Windows移动到Ubuntu 我以前在微软Visual C++中用Windows编程,我需要把我的一些便携式程序(用便携式C++编写)作为跨平台,或者至少我可以为Linux和Windows发布我的程序的工作版本。

从Windows移动到Ubuntu 我以前在微软Visual C++中用Windows编程,我需要把我的一些便携式程序(用便携式C++编写)作为跨平台,或者至少我可以为Linux和Windows发布我的程序的工作版本。,c++,windows,linux,ubuntu,C++,Windows,Linux,Ubuntu,我是Linux应用程序开发的新手(很少使用操作系统本身) 所以,今天,我安装了Ubuntu10.04LTS(通过Wubi),并将g++编译器作为我的主要武器装备在Code::Blocks上。然后我编译了我的第一个Hello World linux程序,我对输出程序感到困惑 我可以通过Code::Blocks中的“Build and run”菜单选项运行我的程序,但当我试图通过文件浏览器(在/media/myntfspatition/MyProject/bin/Release中;是的,我将其保存在

我是Linux应用程序开发的新手(很少使用操作系统本身)

所以,今天,我安装了Ubuntu10.04LTS(通过Wubi),并将g++编译器作为我的主要武器装备在Code::Blocks上。然后我编译了我的第一个Hello World linux程序,我对输出程序感到困惑

我可以通过Code::Blocks中的“Build and run”菜单选项运行我的程序,但当我试图通过文件浏览器(在/media/myntfspatition/MyProject/bin/Release中;是的,我将其保存在NTFS分区中)从外部启动编译后的应用程序时,程序没有出现

为什么??我没有主意了

我需要将我的
Windows
microsoftvisualstudio
心态更改为
Linux
code::Blocks
心态

所以我提出了这些问题:

  • 如何在外部(IDE外部)执行已编译的linux程序?
    • 在Windows中,我只需运行生成的可执行(.exe)文件
  • 如何分发我的linux应用程序?
    • 在Windows中,我只是将可执行文件与相应的DLL文件(如果有)一起分发
  • linux中的LIBs(静态库)和dll(动态库)的等价物是什么?如何使用它们?
    • 在Windows/Visual Studio中,我只需将所需的库添加到项目设置中的其他依赖项中,我的程序就会自动链接到所需的静态库(-ies)/dll
  • 是否可以使用C++库的二进制形式(如果提供的话),这样我就不需要重新编译整个库源代码了?
    • 在Windows中,是的。有时会提供预编译的*.lib文件
  • 如果我想在Linux中创建wxWidgets应用程序,我应该为Ubuntu选择哪个软件包?wxGTK还是wxX11?我可以在X11下运行wxGTK程序吗?
    • 当然,在Windows中,我使用wxMSW
  • 如果问题4的答案是可能的,那么预编译的wxX11/wxGTK库是否存在?还没有尝试过谷歌深度搜索。
    • 在Windows中,有一个名为“wxPack”(wxPack)的项目,它节省了我很多时间
  • 很抱歉问了很多问题,但我对这些linux开发基础知识感到困惑

    任何形式的帮助都将不胜感激()

    谢谢

  • 导航到包含编译程序的文件夹并执行
    /program
  • 发送程序以及任何
    .so
    文件
  • .a
    是静态库,
    。因此
    是共享库
  • 是的,但通常需要先自己编译

  • 但是,不确定wxWidgets发行版。

    1,Unix通常没有可执行文件的特定扩展,因此myprog.exe将只是myprog。 如果IDE没有自动执行此操作,您可能必须将其设置为可执行,请键入“chmod+x myprog”


    5,对于wxWindows,我会下载源代码并构建它,查看构建说明,但可能只是“配置;制作;制作安装”的问题。通常在Unix中,您构建libs表单源代码,以便它们能够正确地找到您机器上的所有组件-您还拥有示例的源代码等。

    我刚刚在rlbond的回答中添加了一些信息

  • 这取决于Linux版本。如果你使用Ubuntu,创建一个deb包。()
  • 我可以在X11下运行wxGTK程序吗


    是的,如果您安装了wxGTK软件包:)

    为什么不坚持使用您所知道的并在.NET中开发的内容呢?Ubuntu自带Mono。你可以继续使用VisualC++或升级到C语言,使你的生活变得简单多了。

    < P>这不是真正要回答你的问题,但我认为是一个有效的建议。 您正试图解决两个问题:

  • Linux环境
  • 确保你的程序是正确的 便携式
  • 如果我是你,我会在Windows上加载代码块,并针对Cygwin或Mingw运行,这将帮助你确保代码跨平台可移植。您熟悉该环境,并将在克服操作系统障碍后获得最大的生产效率


    一旦您对以上内容感到满意,那么就将代码转移到Linux。在这一点上,任何移植工作都应该是微不足道的。

    因为Ubuntu附带了wxGTK软件包,所以您肯定应该针对它们进行构建。不过,对于开发,您应该使用调试版本,因此您可以自己构建,但是对于部署,根据系统提供的包构建似乎更好


    wxX11是一个比wxGTK更糟糕的选择,只在wxGTK不存在或需要比现有版本更新的GTK库的系统上使用它。

    对Linux新手的一条一般建议是:您应该学会正确使用所选的发行版。

    在你的例子中,这意味着学习如何获得Ubuntu提供的正确的开发包。例如,其他一些人建议您下载您将要使用的库的源代码,但更好的方法是使用Ubuntu的包系统下载您要针对的库以及该库的标题(通常放在单独的包中)以及库的调试符号(通常也在单独的包中)

    在Ubuntu的System->Administration菜单中查找Synaptic工具,它允许您搜索Internet上的软件包存储库。您几乎肯定会找到所需库的软件包以及所有工具

    如何执行已编译的linux 外部(外部)程序
    ./myapp
    
    PATH=".:$PATH"
    
    myapp
    
    apt-cache search wx
    
    man ld.so