我想在我的Raspberry Pi(OS:Raspbian)上创建一个MP3播放器。问题是,我没有任何Linux编程经验,而且由于跨平台编译,我在项目配置方面遇到了很大的问题。我想添加两个图书馆:
我能够使用gcc -O2 test.cpp -lmpg123
在linux机器上编译代码,但是我无法强制Visual Studio查看这些库。
我在尝试远程调试程序时也遇到使用wiringPi lib的问题,因为我必须以root用户身份运行GPIO配置。是否有任何方法可以强制Visual Studio以root权限运行我的编译代码?
答案 0 :(得分:0)
就我个人而言,我来自C / C ++ / MFC / Windows编程的悠久历史,根本没有Linux经验。我大约一年前开始为Raspberry编程,当时我从儿子那里得到一个生日礼物。有了C / C ++历史,它真的不是那么难,但你只需要阅读一下,因为在Linux上有很多是相同的,而且很多都不是:)。只需阅读和阅读,及时,您是一位经验丰富的Linux程序员!我害怕需要一些时间。
所以,我认为我是一个经验丰富的新手:)我在www.die.net(和其他Linux手册页)上找到了很多信息。如果你在那里搜索一个函数,比如printf(),看看(3)页面 - 它们解释了你应该如何使用'm。
但是虽然VS2017在这方面做得非常好,但并不总是如你所愿那样顺利。有时只需要重新启动Raspberry,重新启动VS并再试一次。 Linux交叉编译在VS中是一个非常新的,并不完美。
一些提示:
使用交叉编译VS本身不进行任何编译,您可以使用它来维护您的项目。当必须编译项目时,所有必需的文件都被复制到Raspberry,VS会调用编译器和链接器。
关于如何为远程调试配置项目的问题:最好从Visual Studio 2017中的Blink示例开始(文件,新建,项目,已安装,Visual C ++,跨平台,Linux => Blink)。它应该没有问题。从那里,您可以进一步构建您的项目。
在Blink示例中,他们使用wiringPiSetupSys()和远程命令 gpio export 17 out 来运行没有sudo的程序。我发现将其更改为wiringPiSetup()并禁用远程命令,仍然可以运行和调试程序。在Raspberry上,我可以通过发出 ./ [programname] 从它的文件夹运行该程序。如果这对您不起作用,您可以通过发出 sudo ./ [programname] 来运行该程序。