如何使用g ++(Ubuntu)编译OpenAL程序?

Sef*_*efu 4 c++ linux ubuntu linker openal

我试图找到一种方法让OpenAL在我的电脑上工作:

Ubuntu 12.10 (running on 2010 intel i7 Macbook Pro)
Run Code Online (Sandbox Code Playgroud)

我从终端安装了OpenAL库:

$ sudo apt-get install libopenal-dev
Run Code Online (Sandbox Code Playgroud)

一切顺利.现在我尝试创建一个简单的C++程序,其中包含库:

#include <iostream>
#include <AL/alut.h>

using namespace std;

int main(){
    cout << "Hello, world" << endl;
}
Run Code Online (Sandbox Code Playgroud)

无论我怎么努力,我最接近找到如何使用g ++编译它是:

$ g++ test.cpp -lalut 
Run Code Online (Sandbox Code Playgroud)

这会出现以下错误:

test.cpp:2:21: fatal error: AL/alut.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

关于如何将OpenAL链接到我的项目的任何想法?我花了几个小时在谷歌上,答案似乎不存在.我可能做了一些根本错误的事情,因为我对Linux c ++开发不熟悉.谢谢.

编辑:更改以供参考:

$ g++ -lalut test.cpp
Run Code Online (Sandbox Code Playgroud)

$ g++ test.cpp -lalut
Run Code Online (Sandbox Code Playgroud)

(后面是正确的做法,我发错了).

Jac*_*ker 7

确保安装了alut

sudo apt-get install libalut-dev
Run Code Online (Sandbox Code Playgroud)


Zul*_*tar 5

您的错误消息表明您的编译器无法找到ALUT的头文件(一个实用工具包,可以更轻松地开始使用OpenAL开发).这可能是出于以下两个原因之一:

  1. 您根本没有安装库.在这种情况下,apt-get install请像使用OpenAL本身一样使用.

  2. 标头位于系统的某个位置,但不在默认的包含路径中.如果能够在文件系统上找到库,请确保使用该-I开关使g ++知道其include目录.

通常,当使用g ++(或MinGW用于重要的事项)链接到库时,编译工具链在编译期间需要有三件事情可用:

  • 库的include目录(头文件所在的位置) - 使用 -I
  • 库文件的目录 - 使用 -L
  • 库文件的名称 - 使用 -l

通常在Linux上,前两个是在相应库包的安装过程中自动处理的.但是,如果您的库位于标准目录以外的其他位置,则必须明确指定include和library路径.

有关g ++用法的简要介绍,另请参见此处.

编辑:我意识到我花了一点时间摆弄我的答案,而你的问题已经解决了.但我希望上面的信息对你有用!