在 FreeBSD 上安装 gosu

Installing gosu on FreeBSD

我正在尝试在 FreeBSD 上安装此 Ruby gem,但失败并出现以下错误:

# gem install gosu
Building native extensions. This could take a while...
ERROR:  Error installing gosu:
        ERROR: Failed to build gem native extension.

    current directory: /usr/local/lib/ruby/gems/2.4/gems/gosu-0.14.5/ext/gosu
/usr/local/bin/ruby24 -I /usr/local/lib/ruby/site_ruby/2.4 -r ./siteconf20190322-6847-x8s25j.rb extconf.rb
The Gosu gem requires some libraries to be installed system-wide.
See the following site for a list:
https://github.com/gosu/gosu/wiki/Getting-Started-on-Linux
cat: /proc/cpuinfo: No such file or directory
checking for -lopenal... yes
checking for AL/al.h... yes
creating Makefile

current directory: /usr/local/lib/ruby/gems/2.4/gems/gosu-0.14.5/ext/gosu
make "DESTDIR=" clean

current directory: /usr/local/lib/ruby/gems/2.4/gems/gosu-0.14.5/ext/gosu
make "DESTDIR="
compiling ../../src/Audio.cpp
In file included from ../../src/Audio.cpp:17:
../../src/SndFile.hpp:111:33: warning: field 'buffer' is uninitialized when used here [-Wuninitialized]
        : file(nullptr), reader(buffer.front_reader())
                                ^
../../src/SndFile.hpp:123:33: warning: field 'buffer' is uninitialized when used here [-Wuninitialized]
        : file(nullptr), reader(buffer.front_reader())
                                ^
2 warnings generated.
compiling ../../src/AudioImpl.cpp
compiling ../../src/Bitmap.cpp
compiling ../../src/BitmapIO.cpp
compiling ../../src/BlockAllocator.cpp
compiling ../../src/Channel.cpp
compiling ../../src/Color.cpp
compiling ../../src/DirectoriesApple.cpp
compiling ../../src/DirectoriesUnix.cpp
compiling ../../src/DirectoriesWin.cpp
compiling ../../src/FileUnix.cpp
../../src/FileUnix.cpp:53:47: error: use of undeclared identifier 'S_IRUSR'
    pimpl->fd = open(filename.c_str(), flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
                                              ^
../../src/FileUnix.cpp:53:55: error: use of undeclared identifier 'S_IWUSR'
    pimpl->fd = open(filename.c_str(), flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
                                                      ^
../../src/FileUnix.cpp:53:63: error: use of undeclared identifier 'S_IRGRP'
    pimpl->fd = open(filename.c_str(), flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
                                                              ^
../../src/FileUnix.cpp:53:71: error: use of undeclared identifier 'S_IWGRP'
    pimpl->fd = open(filename.c_str(), flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
                                                                      ^
../../src/FileUnix.cpp:53:79: error: use of undeclared identifier 'S_IROTH'
    pimpl->fd = open(filename.c_str(), flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
                                                                              ^
../../src/FileUnix.cpp:53:87: error: use of undeclared identifier 'S_IWOTH'
    pimpl->fd = open(filename.c_str(), flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
                                                                                      ^
6 errors generated.
*** Error code 1

Stop.
make: stopped in /usr/local/lib/ruby/gems/2.4/gems/gosu-0.14.5/ext/gosu

我尝试的其他事情:

甚至可以在 FreeBSD 上安装它吗?搜索没有 return 任何有用的信息。

在 FreeBSD 系统上,头文件的组织方式与 Linux 略有不同。

Quick man 查找显示,您需要

#include    <sys/types.h>
#include    <sys/stat.h>
#include    <fcntl.h>

使这些定义可见。