我曾经在Windows中使用Microsoft Visual C ++进行编程,我需要将一些可移植程序(用可移植的C ++编写)变成跨平台,或者至少我可以为两个Linux发布我的程序的工作版本和Windows。
我是Linux应用程序开发的新手(并且很少使用操作系统本身)。
所以,今天,我安装了Ubuntu 10.04 LTS(通过Wubi)并装备了Code :: Blocks和g ++编译器作为我的主要武器。然后我编译了我的第一个Hello World linux程序,我对输出程序感到困惑。
我可以通过Code :: Blocks中的“Build and Run”菜单选项运行我的程序,但是当我尝试通过文件浏览器从外部启动编译的应用程序时(在/ media / MyNTFSPartition / MyProject / bin / Release中;是的,我将它保存在我的NTFS分区中),程序没有显示出来。
为什么呢?我没想到了。
我需要将Windows
和Microsoft Visual Studio
心态更改为Linux
和Code::Blocks
心态。
所以我想出了这些问题:
很抱歉提出很多问题,但我对这些Linux开发基础知识感到很困惑。
任何形式的帮助将不胜感激=)
感谢。
答案 0 :(得分:16)
如何执行已编译的linux 外部程序(IDE外部)?在 Windows,我只是运行生成的 可执行(.exe)文件
在Linux上你也这样做。唯一的区别是在Linux上当前目录默认不在PATH中,所以通常你会这样做:
./myapp
如果将当前目录添加到路径
PATH=".:$PATH"
然后以类似Windows的方式
myapp
会这样做,但由于存在安全风险,建议不要这样做,至少在共享环境中是这样(你不想让某人留下/ tmp / ls)。
如何分发我的linux应用程序? 在Windows中,我只是使用相应的DLL文件(如果有的话)分发可执行文件
如果你认真分发,你应该了解.deb(Ubuntu,Debian)和.rpm(RedHat,CentOS,SUSE)。这些是“软件包”,使用户可以使用特定于分发的方式安装应用程序。
还有一些安装程序项目与Windows安装程序生成器的工作方式类似,但我建议首先研究前一个路径。
Linux中的LIB(静态库)和DLL(动态库)的等价物是什么?如何使用它们?
.a(静态)和.so(动态)。您可以使用它们与Windows上的方式大致相同,当然也可以使用特定于gcc的编译选项。我不使用Code :: Blocks所以我不知道他们的对话框是什么样的,最后它是关于添加-llibrary到链接选项(猜猜:在windows上它是关于添加/ llibrary ;-))
是否可以使用C ++库的“二进制形式”(如果提供),以便我不需要重新编译整个库源代码?
是。分布中已经存在大量的库。
另请注意,如果您使用.deb和.rpm进行分发,则可以说“我的应用程序需要安装此类和此类库”,并且它们将从分发存档中安装。这是推荐的方式,一般情况下,您不应该分发您的库副本。
如果我想在Linux中创建一个wxWidgets应用程序,我应该选择哪个包用于Ubuntu? wxGTK还是wxX11?我可以在X11下运行wxGTK程序吗?
首先尝试wxGTK,对话框可能看起来更好,应该使用gnome主题等。
如果问题没有。 4是可能的,有预编译的wxX11 / wxGTK库存在吗?没试过深度谷歌搜索。
尝试
apt-cache search wx
(或产生你的Ubuntu软件中心并搜索wx)
简而言之:您将在分发档案中找到所需的一切。
答案 1 :(得分:3)
./program
.so
个文件.a
是静态库,.so
是共享库。不确定wxWidgets发行版。
答案 2 :(得分:2)
由于Ubuntu附带了wxGTK软件包,你绝对应该构建它们。对于开发,您应该使用调试版本,因此最好自己构建,但是针对系统提供的软件包进行部署构建似乎更好。
wxX11是比wxGTK更糟糕的选择,仅用于wxGTK不存在或需要比现有更新的GTK库的系统。
答案 3 :(得分:1)
为什么不坚持使用您所知道的并在.NET中开发? Ubuntu以Mono为原生。您可以继续使用Visual C ++或升级到C#,让您的生活更轻松。
答案 4 :(得分:1)
对Linux新手的一般建议,但从技术上讲是开头的,是:你应该学会正确使用你选择的发行版。
在您的情况下,这意味着学习如何获得Ubuntu提供的正确开发包。例如,其他一些人建议您下载要使用的库的源代码,但更好的方法是使用Ubuntu的软件包系统下载您要编程的库,以及该库的标题(通常放在一个单独的包中)以及库的调试符号(通常也在一个单独的包中)。
在Ubuntu的System-> Administration菜单中查看 Synaptic 工具,该工具允许您搜索Internet上的软件包存储库。您几乎肯定会找到所需库以及所有工具的包。
答案 5 :(得分:0)
1,Unix通常没有可执行文件的特定扩展名 - 所以myprog.exe只是myprog。 如果IDE不自动执行此操作,您可能必须将其设置为可执行文件,请键入“chmod + x myprog”
5,对于wxWindows,我会下载源代码并构建它,检查构建说明,但这可能只是“configure; make; make install”的问题。通常在Unix中,您构建libs源代码,以便他们可以正确地找到您机器上的所有组件 - 您还有示例源等。
答案 6 :(得分:0)
我刚刚在rlbond的回答中添加了一些信息。
我可以在X11下运行wxGTK程序吗?
是的,如果您安装了wxGTK软件包:)
答案 7 :(得分:0)
这不是真的会回答你的问题,但我认为这是一个有效的建议 您有两个问题需要处理:
如果我是你,我会在Windows上加载CodeBlocks并运行Cygwin或Mingw,这将帮助您确保您的代码可以跨平台移植。您熟悉环境,可以最大限度地提高工作效率,克服操作系统障碍。
如果您对上述内容感到满意,请将代码移至Linux。在那时,任何移植工作都应该是微不足道的。
答案 8 :(得分:0)
当你说你的程序没有显示时我假设你的意思是它在文件浏览器中,但是当你双击它时你有一个忙碌的光标片刻然后什么也没发生?
如果是这样,则意味着程序无法运行,可能是因为它无法找到与其链接的动态库。要诊断问题,您可以从终端运行它,然后您将被告知问题是什么。
您可能需要阅读ld.so
的手册页,即输入
man ld.so
进入终端。这告诉您Linux动态库链接器在运行时查找库的位置。它还引用了另一个名为ldd
的有用工具,如果您正在进行Linux开发,我建议您熟悉它。