草庐IT

c++ - 从 Windows 迁移到 Ubuntu

coder 2023-06-17 原文

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .


6年前关闭。







Improve this question




我曾经在 Windows 中使用 Microsoft Visual C++ 进行编程,我需要使我的一些可移植程序(用可移植 C++ 编写)成为跨平台的,或者至少我可以为 Linux 和 Windows 发布我的程序的工作版本。

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

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

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

为什么?我没主意了。

我需要更改我的WindowsMicrosoft Visual Studio心态LinuxCode::Blocks心态。

所以我想出了这些问题:

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

  • 很抱歉问了很多问题,但我真的对这些 linux 开发基础感到困惑。

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

    谢谢。

    最佳答案

    How can I execute my compiled linux programs externally (outside IDE)? In Windows, I simply run the generated executable (.exe) file



    在 Linux 上,你也这样做。唯一的区别是在 Linux 上,当前目录默认不在 PATH 中,所以通常你这样做:
    ./myapp
    

    如果将当前目录添加到路径
    PATH=".:$PATH"
    

    然后像windows一样的方式
    myapp
    

    可以,但由于安全风险,不建议这样做,至少在共享环境中(你不想运行某人留下的/tmp/ls)。

    How can I distribute my linux application? In Windows, I simply distribute the executable files with the corresponding DLL files (if any)



    如果您认真对待分发,您可能应该了解 .deb(Ubuntu、Debian)和 .rpm(RedHat、CentOS、SUSE)。这些是“包”,使用户可以轻松地使用特定于分发的方式安装应用程序。

    还有一些安装程序项目的工作方式与 Windows 安装程序生成器类似,但我建议先研究前一种路径。

    What is the equivalent of LIBs (static library) and DLLs (dynamic library) in linux and how to use them?



    .a(静态)和 .so(动态)。您使用它们的方式或多或少与在 Windows 上相同,当然使用 gcc 特定的编译选项。我不使用 Code::Blocks 所以我不知道他们的对话框是什么样子的,最后它是关于将 -llibrary 添加到链接选项(猜猜看:在 Windows 上它是关于添加/llibrary ;-))

    Is it possible to use the "binary form" of a C++ library (if provided) so that I wouldn't need to recompile the entire library source code?



    是的。许多库已经存在于发行版中。

    另请注意,如果您使用 .deb 和 .rpm 进行分发,您可以说“我的应用程序需要安装这样和这样的库”,它们将从分发文件中安装。这是推荐的方式,一般来说你不应该分发你的库拷贝。

    If I want to create a wxWidgets application in Linux, which package should I pick for Ubuntu? wxGTK or wxX11? Can I run wxGTK program under X11?



    首先尝试 wxGTK,对话框可能看起来更好,应该使用 gnome 主题等。

    If question no. 4 is answered possible, are precompiled wxX11/wxGTK library exists out there? Haven't tried deep google search.



    尝试
    apt-cache search wx
    

    (或生成您的 Ubuntu 软件中心并搜索 wx)

    简而言之:您会在分发文件中找到所需的一切。

    关于c++ - 从 Windows 迁移到 Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2754707/

    有关c++ - 从 Windows 迁移到 Ubuntu的更多相关文章

    1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

      我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

    2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

      我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

    3. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

      我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

    4. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

      这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

    5. ruby - 使用 `+=` 和 `send` 方法 - 2

      如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

    6. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

      之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

    7. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

      深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

    8. 在VMware16虚拟机安装Ubuntu详细教程 - 2

      在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

    9. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

      需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

    10. ruby - 如何计算 Liquid 中的变量 +1 - 2

      我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

    随机推荐