在ubuntu中,我应该把这些文件放在哪里?

在ubuntu中,我应该把这些文件放在哪里?,ubuntu,path,sfml,undefined-reference,Ubuntu,Path,Sfml,Undefined Reference,我在ubuntu 12.04中遇到了一些问题 我有一个SFML库,我想在我的code::blocks项目中使用它 在SFML文件夹中有两个子文件夹-包括和库。 包含包含头文件(.h文件)。 lib包含库文件(.so文件) 我无法将库直接链接到我的项目,因为编译器找不到文件 我在google中进行了研究,发现我必须将sfml文件放置在标准路径中,以便在代码块中正确链接它们。 那么,我应该把这些文件放在什么默认的标准位置呢 编辑:在做了大量的谷歌搜索之后,我开始知道如何将标题和模块放在正确的标准位置

我在ubuntu 12.04中遇到了一些问题

我有一个SFML库,我想在我的code::blocks项目中使用它

在SFML文件夹中有两个子文件夹-包括。 包含包含头文件(.h文件)。 lib包含库文件(.so文件)

我无法将库直接链接到我的项目,因为编译器找不到文件

我在google中进行了研究,发现我必须将sfml文件放置在标准路径中,以便在代码块中正确链接它们。 那么,我应该把这些文件放在什么默认的标准位置呢

编辑:在做了大量的谷歌搜索之后,我开始知道如何将标题和模块放在正确的标准位置。但是在编译和运行(从代码块或终端)后,这些未定义的引用错误会出现:-

/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'
collect2: ld returned 1 exit status

您可以将include文件夹的内容放入/usr/include/usr/local/include中,将lib文件夹的内容放入/usr/lib/usr/local/lib

您还可以在编译代码时指定include和libraries路径。例如,如果您使用的是
gcc
,则可以执行以下操作:


gcc prog.c-oplog-I/path/to/include/folder-L/path/to/libraries/folder-lLibraryName。因此

/usr/include和/usr/local/include两者都存在。我可以把它们放在其中的任何一个吗?@Raj是的,这取决于编译器,它们中的大多数都会同时在这两个位置查找。好的,所以我将include复制到/usr/include,并将lib复制到/usr/lib,但代码块仍然会给出许多未定义的引用错误。是否需要在代码块中执行某些操作?@Raj如果头文件位于文件夹中,您可能必须更改代码中的
#include
语句,例如:如果头文件位于
/usr/include/newHeaders
文件夹中,请使用
#include“newHeaders/header.h”
。我选中了。include文件夹包含另一个名为SFML的文件夹,其中包含头文件。因此,在我在代码块中的main.cpp文件中执行此操作之后:#include,它说:致命错误:SFML/Graphics.hpp:没有这样的文件或目录