我正在使用Cmake为我的大学开发一个简单的C共享库。 目前我正在开发我的* .so和我的。* h文件的安装程序。
当用户运行着名的sudo make install
时,我应该在哪里放置so和头文件?
据我所知:
/usr/lib
和/usr/include
中,因为这些文件夹是为分发包保留的; /lib
和/include
中,因为这些文件夹是为操作系统启动包保留的; 这让我留下了usr/local/lib
和/usr/local/include
。但是我无法决定是否应该将文件放在子文件夹中:
usr/local/lib
和/usr/local/include
中会使它们在系统中直接可用,但它们将与文件夹中的所有其他文件保持无组织状态。更令人不安的事实是,如果某人安装了另一个共享库,其标题与我的名称相同,则可能会发生未知行为; /usr/local/lib/myAwesomeProject/
和/usr/local/include/myAwesomeProject
)中将避免上述行为,但会阻止系统自动检测我的库(根据我的理解,系统会自动查找包含和库只在特定目录中非递归):所以如果系统查看/usr/local/include
,我的包含将因子文件夹而找不到!为了帮助你,这是我的系统:
感谢您的回复!
答案 0 :(得分:2)
/usr/local/lib
中(否则链接程序将找不到它们),但可以将标头放置在子文件夹下< / b>(/usr/local/include
)(因此它们不会与其他库的标头混合在一起)。– Tsyvarev