如何在ubuntu中安装SFML
How to install SFML in ubuntu?
我下载了SFML,然后复制了usr/local/include/中的所有头文件,并复制了usr/local/lib/中的所有库。
我有一个文件名为main.cpp在桌面,我想编译。
首先我这样做:-
g++ -c main.cpp
之后,当我尝试这样做:-
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
它给了我:-
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_action@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_list_entry_get_next@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_list_entry_get_name@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_new@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_receive_device@LIBUDEV_183'
/usr/local/lib/libsfml-graphics.so: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_devnode@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_enable_receiving@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_new@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_get_fd@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_unref@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_property_value@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_filter_add_match_subsystem_devtype@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_get_list_entry@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_scan_devices@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_enumerate_add_match_subsystem@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_syspath@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_sysattr_value@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_monitor_new_from_netlink@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_new_from_syspath@LIBUDEV_183'
/usr/local/lib/libsfml-window.so: undefined reference to `udev_device_get_parent_with_subsystem_devtype@LIBUDEV_183'
我已经正确安装了所有必需的依赖项:https://github.com/SFML/SFML/wiki/Tutorial%3A-Installing-SFML-dependencies
我是否错过了任何必需的步骤?
要在Ubuntu中安装它,首先在终端运行以下命令-
sudo apt-get install libsfml-dev
确保你已经有了编译器(GCC),如果没有,那么使用
安装它sudo apt-get install build-essential
然后创建一个简单的SFML应用程序来测试这个
#include <SFML/Graphics.hpp>
int main(int argc, char const *argv[])
{
sf::RenderWindow window(sf::VideoMode(200,200), "Hello From SFML");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Magenta);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if(event.type == sf::Event::Closed){
window.close();
}
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
现在在repo中创建与main.cpp
相同的makefile
compile:./main.cpp
g++ -c ./main.cpp
g++ main.o -o app -lsfml-graphics -lsfml-window -lsfml-system
run:
./app
现在运行以下命令
编译它make compile
,最后运行以下命令
make run
仅仅因为你已经安装了依赖项并不意味着你正在使用它们。
undefined reference to `udev_device_get_action@LIBUDEV_183'
提到udev
和LIBUDEV
,我认为你需要链接到libdev。尝试在命令行中添加-ludev
。
如果你粘贴了所有的链接错误,那么这可能会解决它。如果您只粘贴了前20个库,那么可能还需要链接到其他库。查看缺失的符号,找出它们来自哪个库,并添加它们。
/usr/local/lib/libsfml-graphics.so: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20'
不知道这是怎么回事。您可能需要链接到c++库?
无论如何,您应该看看为SFML项目设置makefile的说明:https://github.com/SFML/SFML/wiki/Tutorial%3A-Build-your-SFML-project-with-CMake
相关文章:
- 在Ubuntu 16.04上安装Cilk时出现问题
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- C++:如何在CLion IDE中安装Boost
- SFML纹理像播放器
- 如何使用AngelScript注册SFML Vector2运算符
- 如何修复sfml c++代码编译错误
- SFML library: http request
- 落砂模拟碰撞检测C++和SFML
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- 安装opencv失败-粘贴CMakeError.log的内容
- 在cygwin中测试新的boost安装时出现cpp错误
- SFML RenderWindow打开窗口需要很长时间
- 有人安装"IITB Simplecpp in mac"吗?
- 矢量下标超出SFML游戏中的范围
- 获取 SFML 窗口的 HWND 和高可用性?
- 将 Vulkan 与 SFML 结合使用?
- 使用Mac在CodeLite上安装SFML
- 安装 SFML 后 Visual Studio 2015 中出现错误
- 我如何在我的mac上安装SFML 2.0 ?
- 如何在ubuntu中安装SFML