问题1: g++ 命令中的-I -L : 例如:
g++ -o netapp net_demo.cpp -I $CAFFE_ROOT/include -I $CAFFE_ROOT/.build_release/src/ -I /usr/local/cuda/include -L $CAFFE_ROOT/build/lib -lcaffe -lglog -lboost_system -lprotobuf
格式:
g++ -o 生成文件名 所需的编译文件
-I 后指定头文件位置,-L后指定库文件位置,后面加上所需要的库名称 ,比如$CAFFE_ROOT/build/lib下的libcaffe.so,在这里要写成lcaffe,即l+库名(去掉前面的lib和后面的.so*)
.so.* 是动态库文件,
.a 是静态库文件
.h 是头文件
问题2:可能需要新版本的libprotobuf,libprotobuf的安装方法:
1.先下载安装包
2.
sudo apt-get remove libprotobuf-dev
卸载旧版本
3.
./configure --prefix=/usr #指定安装在根目录的usr下
make
make check
sudo make install
sudo ldconfig # refresh shared library cache
protoc --version 可查看版本
问题3:caffe.pb.h 丢失: 在 $CAFFE_ROOT/include/caffe/proto 文件夹下应该存在 caffe.pb.h和caffe.pb.cc 如果不存在的生成办法:
进入 $CAFFE_ROOT/src/caffe/proto 文件夹下
skyu@skyu-OMEN-by-HP-Laptop-17-an0xx:~/caffe-master/src/caffe/proto$
protoc --cpp_out=/home/skyu/caffe-master/include/caffe/ caffe.proto
之后在$CAFFE_ROOT/include/caffe 里面会看见两个文件caffe.pb.h和caffe.pb.cc,新建一个叫proto的文件夹,把这两个文件放进去。
问题4:编译.cpp文件时,弹出警告libprotobuf.so.9, needed by ... may conflict with libprotobuf.so.15:
warning: libprotobuf.so.9, needed by /home/skyu/caffe-master/build/lib/libcaffe.so,may conflict with libprotobuf.so.15
运行也没法运行,显示段错误。
解决:
由于对caffe编译后,重装了新的libprotobuf,导致了版本不匹配问题。后来重新编译caffe一次,没有出现该问题。
问题5:编译.cpp文件后,运行出现error while loading shared libraries: libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory:
skyu@skyu-OMEN-by-HP-Laptop-17-an0xx:~/caffe-master/my$ ./netapp./netapp: error while loading shared libraries: libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory
解决:etc/profile 里面加上libcaffe.so所在路径,
export LD_LIBRARY_PATH=/home/skyu/caffe-master/build/lib:$LD_LIBRARY_PATH
之后 source etc/profile
可能还需要重启才能编译成功。
问题6:cp文件夹目录结果返回 略过
解决办法:
$ cp file1 file2
cp: 略过目录 “file1”
参数给加上一个-r复制
$ cp -r file1 file2
再次提示:
cp: 无法创建目录 “file2”: 权限不够
$ sudo -i
密码:
# cp -r file1 file2
复制成功。
-r 选项表示递归(文件夹里所有文件)执行
问题7:Linux下批量修改文件及文件夹所有者及权限
chmod -R 700 $路径
chmod -R 700 /opt/oracle/
-R参数是递归 处理目录下的所有文件以及子文件夹
700是变更后的权限表示(只有所有者有读和写以及执行的权限)
/opt/oracle/ 是需要执行的目录
例:对 /opt/oracle/ 目录下的所有文件与子目录执行相同的所有者变更,使所有者修改为oinstall用户组的oracle用户
chown -R oracle:oinstall /opt/oracle/
oracle:oinstall oinstall用户组的oracle,用户组不必须