程序是一个动态库(用 Qt 静态编译出来的版本,所以比较大),编译出来有四个文件。
-rwxr-xr-x 1 myCode staff 18M 8 17 10:41 libScreenshot.1.0.0.dylib lrwxr-xr-x 1 myCode staff 25B 8 17 10:41 libScreenshot.1.0.dylib -> libScreenshot.1.0.0.dylib lrwxr-xr-x 1 myCode staff 25B 8 17 10:41 libScreenshot.1.dylib -> libScreenshot.1.0.0.dylib lrwxr-xr-x 1 myCode staff 25B 8 17 10:41 libScreenshot.dylib -> libScreenshot.1.0.0.dylib 核心文件是 libScreenshot.1.0.0.dylib 其他都是它的链接文件。为了方便调用?那么问题来了。程序中直接 QLibrary library("libScreenshot"); 是失败的,因为找不到文件。
如果写死绝对路径是可以调用的。但是如果库提供给其他人使用呢?是不是要做一个什么脚本什么的把文件复制到系统某个目录而不需要指定绝对路径来让程序调用?
我试了手动 cp *.dylib 文件到 /usr/lib 是拒绝访问的,哪怕加了 sudo,查了下资料是要关闭 SIP 的,明显不是正确姿势:
sudo cp *.dylib /usr/lib Password: cp: /usr/lib/libScreenshot.1.0.0.dylib: Operation not permitted cp: /usr/lib/libScreenshot.1.0.dylib: Operation not permitted cp: /usr/lib/libScreenshot.1.dylib: Operation not permitted cp: /usr/lib/libScreenshot.dylib: Operation not permitted 所以来这里请教大家,正确的发布姿势应该是怎样的?
