非root用户安装caffe

2023-05-16

踩坑绵绵无绝期,完美总结版

初步整理了一下,不想继续整理了,先这样吧

折腾了5天,我是垃圾

此版适合:

  • 没有root权限的普通孩子

  • 对linux系统不熟悉,里面可能有做的多余的地方

经验

  • 问题一般都是版本问题跟路径问题

  • 有奇怪的问题就卸掉重装

  • caffe重新cmake之前最好删掉cmakecache.txt和cmakefiles文件夹

 

安装依赖项

 

安装protobuf     2.6.1(caffe要安这个版本)

      第一次安的3.15.6,不行

#无法下载,手动下载

下载地址:https://github.com/google/googletest/tree/release-1.5.0

参考:http://www.likecs.com/show-129322.html

#如果permission denied ,修改文件权限:chmod +x autogen.sh

#prefix是指定安装目录,没有root权限的可以随意设置一个,如:$HOME/bin等,

#之后记得修改 ~/.bashrc 文件

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wangsuwei/bin/protocbuf_2_6_1/lib

export PATH=$PATH:/home/wangsuwei/bin/protocbuf_2_6_1/bin

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/wangsuwei/bin/protocbuf_2_6_1/lib/pkgconfig/

  1. 下载解压     https://github.com/protocolbuffers/protobuf/tree/2.7.0

  2. 进入文件夹 cd ./protobuf

  3. 缺少google test库:(用1.5.0的可以),把下载的googletest库放到:/opt/RDB/protobuf-2.6.1,改名为gtest(先删除之前老的),

  4. ./autogen.sh 

  5. ./configure --prefix=$HOME/bin/protocbuf_2_6_1  

  6. make

  7. make install

  8. 变量设置

 

查看版本信息的方法:进入bin目录,有protoc文件。./protoc --version

 

安装boost1_67_0

第一次安了1_75,说版本高,后来又安了1_45,说版本低

include:/home/wangsuwei/program/boost_1_67_0 \

 lib:/home/wangsuwei/program/boost_1_67_0/stage/lib \

报错 permission denied chmod +x bootstrap.sh  

          报错build.sh permission denied  

          chmod +x  ./tools/build/src/engine/build.sh

  1. 下载解压

  2. 进入目录 cd ~/source/

  3. 注意如果有多个python,设置python版本。怎么设置见问题合集,搜索boost,一定要看

  4.  ./bootstrap.sh -with-libraries=all --with-toolset=gcc --with-python=/usr/bin/python2.7 --prefix=$HOME/bin/boost_1_67_0  

  5. ./b2 

  6. ./b2 install --prefix=$HOME/bin/boost_1_67_0     

  7. 进入boost安装目录下/lib,创建软连接指向文件位置,ln -s libboost_python27.so libboost_python.so

 

安装gflags,lunwind,  glog,

需要先安装gflags,unwind,再安装glog。

gflags

#cmake 的时候要指定shared_libs=on,否则之后会很多关于share的error。

  1. 下载解压:手动下载,丰衣足食https://codeload.github.com/gflags/gflags/zip/master

  2. 进入目录

  3. mkdir build && cd build

  4. #ccmake ..  修改DBUILD_SHARED_LIBS=ON,和安装路径!!!!

  5. cmake -DBUILD_SHARED_LIBS=ON -DGFLAGS_NAMESPACE=google -G "Unix Makefiles” ../

  6. make

  7. make  install

参考:

https://cmake.org/cmake/help/v3.10/envvar/LDFLAGS.html

https://blog.csdn.net/whatday/article/details/88410313

 

unwind(glog需要unwind)

  1. 下载地址:https://github.com/libunwind/libunwind

  2. CFLAGS=-fPIC

  3. chmod +x autogen.sh

  4. ./autogen.sh --prefix=$HOME/bin --enable-shared

  5. make CFLAGS=-fPIC 

  6. make CFLAGS=-fPIC install  

 

glog

  1. 下载解压:手动下载,丰衣足食https://github.com/google/glog

  2. 进入目录

  3. mkdir build && cd build

  4. #ccmake ..  修改DBUILD_SHARED_LIBS=ON,安装路径,设置unwind路径(3个)。t进入高级模式往下翻就行!!!!

  5. cmake   

  6. make

  7. make  install

 

 

安装leveldb ,lbdb,hdf5,openblas,snappy

这些的安装跟前面大同小异

      snappy(openblas需要它)

      下载链接: https://codeload.github.com/google/snappy/zip/refs/heads/master

 

openblas

git clone git://github.com/xianyi/OpenBLAS  #https://codechina.csdn.net/mirrors/xianyi/openblas

  1. make USE_MASS=0#因为没有安装mass

  2. make install PREFIX=/home/wangsuwei/bin

LMDB

  1. git clone https://github.com/LMDB/lmdb

  2. cd ./lmdb-mdb.master/libraries/liblmdb

  3.      make

  4. make PREFIX=/home/wangsuwei/bin install 

#??怎么还是往usr/local写?

换下面的做法:

  1. 修改makefile文件,prefix  = /home/wangsuwei/bin

  2. make

  3. make install

LevelDB

  1. git clone https://github.com/google/leveldb

  2. 下载googletest和benchmark,放到thirdparty文件夹中,并修改名字,去掉master

https://github.com/google/benchmark

https://github.com/google/googletest

  1.      mkdir build && cd build

  2. export CXXFLAGS="-fPIC" 

  3.           ccmake ..  #修改安装路径!!!!

  4. cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .

  5. make 

  6. make install

HDF5

这是个大坑,下载了多个版本都不行,最后使用了anaconda带的hdf。

git https://support.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.10.4.tar   #https://www.hdfgroup.org/downloads/hdf5/source-code/

  1. chmod +x configure

  2. ./configure --prefix=/home/wangsuwei/bin/hdf_1_8

  3. make

  4. make install

 anaconda虽然解决了这个问题,但是会带来新的坑,就是又多了一个python。

根据后面出现的问题,觉得protobuf的find_package的处理可能有帮助,但是心好累,能用就好了。。。

 

配置caffe

下载caffe,并解压

cd caffe

cp Makefile.config.example Makefile.config

修改配置

修改的文件,

makefile.config

  BLAS := open

  1. opencv是3版本的,取消注释 OPENCV_VERSION=3

  2. 修改cuda,python目录

  3. 设置BLAS方式和include,lib的路径

  4. 如果是用 的anaconda的python,设置其目录和python_include 目录

  5. 修改 INCLUDE_DIRS 和LIBRARY_DIRS,将之前安装的依赖包的 include 和lib文件路径,写进去。

cmakelist

找到下面添加 -std=c++11

if(UNIX OR APPLE)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -std=c++11")

endif()

cmake/Modules中的find文件的路径

  1. moudles中findGFlags,FindGlog,FindLMDB,FindLevelDB

  2. cmake中ProtoBuf的find_package的替换

  3. cmake中Dependencies.cmake中opencv相关变量的设置,不想研究了,直接写成绝对路径了,指定opencv版本

cmake,里面可能有没用的,最后能用就行

cmake . $caffe_root -G "Unix Makefiles" \

-DBLAS=open \

-DGLOG_ROOT_DIR=/home/wangsuwei/bin \

-DGFLAGS_ROOT_DIR=/home/wangsuwei/bin \

-DLMDB_DIR=/home/wangsuwei/bin \

-DLEVELDB_ROOT=/home/wangsuwei/bin \

-DSNAPPY_ROOT_DIR=/home/wangsuwei/bin \

-DBOOST_ROOT=/home/wangsuwei/bin/boost_1_67_0 \

-DProtobuf_DIR=/home/wangsuwei/bin/protocbuf_2_6_1

make -j

make pycaffe

export PYTHONPATH=$(pwd)/python:$PYTHONPATH

参考:https://blog.csdn.net/y_ear/article/details/84622383

 

备用

#进入boost安装目录下/lib,创建软连接指向文件位置,ln -s libboost_python27.so libboost_python.so

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wangsuwei/bin/protocbuf_2_6_1/lib

export PATH=$PATH:/home/wangsuwei/bin/protocbuf_2_6_1/bin

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/wangsuwei/bin/protocbuf_2_6_1/lib/pkgconfig/

export PATH=$PATH:/home/wangsuwei/bin

 

 

出现过的问题:

问题1 找不到propoc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wangsuwei/bin/lib

export PATH=$PATH:/home/wangsuwei/bin/bin

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/wangsuwei/bin/lib/pkgconfig/

 

问题2:编译选项问题

https://blog.csdn.net/m_buddy/article/details/88085425

/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

 

    /usr/include/c++/4.9/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

    #error This file requires compiler and library support for the

    /usr/local/include/google/protobuf/arena.h:324:36: note: template argument deduction/substitution failed:

    Makefile:600: recipe for target ‘.build_release/src/caffe/proto/caffe.pb.o’ failed

    make: *** [.build_release/src/caffe/proto/caffe.pb.o] Error 1

解决方案

打开Makefile文件,给CXXFLAGS、NVCCFLAGS、LINKFLAGS都使用-std=c++11标准编译:

CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS)

改为:

CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

改为:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)  -std=c++11make

LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS)

改为:

LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11

 

问题3 levelDB 找不到

在生成动态库时,常常习惯性的加上fPIC选项,fPIC有什么作用和意义,加不加有什么区别,这里做下小结:fPIC的全称是 Position Independent Code, 用于生成位置无关代码。什么是位置无关代码,个人理解是代码无绝对跳转,跳转都为相对跳转。

解决方案

重新安装leveldb

make前加入 export CXXFLAGS="-fPIC" 

 

问题4 找不到lsnappy,找不到libboost_python

安装snappy库 https://codeload.github.com/google/snappy/zip/refs/heads/master

cblas,lapack  修改makefile文件:BLAS := open

boost 创建软连接指向文件位置,ln -s libboost_python27.so libboost_python.so

注意:

一开始设置BLAS := open就好,后来不行了,在cmake后加选项 -DBLAS=open

 

问题5,6,7,8本质上是一类问题

问题5 cmake 找不到gflag,glog

原因 参考https://blog.csdn.net/10km/article/details/72967656

这个问题的根本原因在于代码作者对cmake的find_library的查找机制没有全搞明白

简单说就是调用find_library时,会以从一组路径中顺序查找指定的库,这有一个优先序问题,如果没有指定了NO_DEFAULT_PATH,则会先查找默认的系统库路径

如果指定了NO_DEFAULT_PATH,则只查找PATHS提供的路径,不会查找系统库路径。因为所以原始代码中没有加NO_DEFAULT_PATH导致每次只能找到系统路径下的库。

如何保证PATHS指定的路径优先被搜索呢?

解决的办法cmake官网也给出来了,就是调用两次find_library,第一次加NO_DEFAULT_PATH,第二次则不加。

方法

cmake .. $caffe_root -G "Unix Makefiles" \

-DGLOG_ROOT_DIR=/home/wangsuwei/bin \

-DGFLAGS_ROOT_DIR=/home/wangsuwei/bin

修改FindGlog.cmake,FindGFlags.cmake

注意添加/include;  NO_DEFAULT_PATH

 

 

问题6 找不到 protobuf(这个解决方案不行,后面还会出问题,略过,也不是完全错误,而是做了一半,后面有类似问题,采用了两种解决方案)

在问题12中得到解决

参考:

https://blog.csdn.net/fb_941219/article/details/88526157

https://zhuanlan.zhihu.com/p/50829542

方法:

  1. 在caffe/cmake中找到ProtoBUf.cmake。

  2. 在ProtoBUf.cmake找到中加find_package( Protobuf REQUIRED),前面加入:

set(Protobuf_DIR /home/wangsuwei/bin/)

set(Protobuf_INCLUDE_DIR /home/wangsuwei/bin/include)

set(Protobuf_LIBRARIES /home/wangsuwei/bin/lib)

图示:

问题7  找不到HDF5,找到版本1,12,0!!

 

 

#下载了1.8,1.10,1.12都不行

#最后使用anaconda自带的hdf5,

 

set(HDF5_DIR /home/wangsuwei/bin/)    没用

set(HDF5_INCLUDE_DIRS /home/wangsuwei/bin/include)

set(HDF5_LIBRARIES /home/wangsuwei/bin/lib)

 

加到path里  没用

export HDF5_DIR=/home/wangsuwei/bin 没用

 

猜测是版本不匹配

export HDF5_DISABLE_VERSION_CHECK=1  没用

 

问题8找不到LMDB

cmake/moudles/FindLMDB中

 

find_path(LMDB_INCLUDE_DIR NAMES  lmdb.h PATHS "$ENV{LMDB_DIR}/include")

find_library(LMDB_LIBRARIES NAMES lmdb   PATHS "$ENV{LMDB_DIR}/lib" )

改为

find_path(LMDB_INCLUDE_DIR NAMES  lmdb.h PATHS ${LMDB_DIR}/include NO_DEFAULT_PATH)

find_path(LMDB_INCLUDE_DIR NAMES  lmdb.h PATHS ${LMDB_DIR}/include)

find_library(LMDB_LIBRARIES NAMES lmdb   PATHS ${LMDB_DIR}/lib NO_DEFAULT_PATH)

find_library(LMDB_LIBRARIES NAMES lmdb   PATHS ${LMDB_DIR}/lib )

LevelDB

find_library(LevelDB_LIBRARY NAMES leveldb

                             PATHS /usr/lib ${LEVELDB_ROOT}/lib

                             DOC "Path to leveldb library." NO_DEFAULT_PATH)

find_library(LevelDB_LIBRARY NAMES leveldb

                             PATHS /usr/lib ${LEVELDB_ROOT}/lib

                             DOC "Path to leveldb library.")

 

export LD_LIBRARY_PATH=/home/wangsuwei/bin/lib:$LD_LIBRARY_PATH #不行

export C_INCLUDE_PATH=/home/wangsuwei/bin/include:$C_INCLUDE_PATH

export CPLUS_INCLUDE_PATH=/home/wangsuwei/bin/include:$CPLUS_INCLUDE_PATH

 

问题9:protobuf requires c++11

在Makefile或者CMakeLists.txt中增加 -std=c++11

if(UNIX OR APPLE)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -std=c++11")

endif()

https://blog.csdn.net/sdlypyzq/article/details/108791239

指定编译器为gcc:没用

export CC=/usr/bin/gcc 

export CXX=/usr/bin/g++

 

问题10 boost版本

下了三个版本,1.75太新,1.46太旧,1.67可以

 

问题解析:版本太新

https://stackoverflow.com/questions/65560775/cmake-new-boost-version-may-have-incorrect-or-missing-dependencies-and-importe

确定cmake对应的版本https://cmake.org/cmake/help/v3.12/module/FindBoost.html

下载地址 :https://dl.bintray.com/boostorg/release/1.75.0/source/

 

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wangsuwei/bin/lib

 

问题11  cmake问题

 found thefollowing Boost libraries

could not find boost

python interface is disabled or not all required dependencide found.Builing without it.

 

d

参考:https://www.jianshu.com/p/17a5fdbfa8a9

在\tools\build\example下的user-config.jam中最后一行指定python

# Configure specific Python version.

using python : 2.7 : /usr/bin : /usr/include/python2.7 : /usr/lib/python2.7 ;

  1. 查看boost中的python是不是 libboost_python27.dylib ,我的是 libboost_python38.dylib 得到,就悲剧了。那就重新安装boost

  2. 指定使用的python版本,重新安装

  3. .\bootstrap 中添加参数:--with-python="python/bin/python27"

  4. 安装时出现icu的问题,没管。。。。心累

  5. 别忘了ln -s 那一行

问题12

make -j 错误 undefined reference to `google::protobuf:

之前忽略掉了protobuf的warning,还是得解决

原因:protobuf是自己安装的,使用find_package是找不到的,需要自己找路径

参考:https://www.jianshu.com/p/2946b0e5c45b

修改ProtoBuf.cmake

注释掉#find_package( Protobuf REQUIRED)

替换为:

include(FindPackageHandleStandardArgs)

set(Protobuf_DIR /home/wangsuwei/bin/protocbuf_2_6_1)

set(PROTOBUF_PROTOC_EXECUTABLE /home/wangsuwei/bin/protocbuf_2_6_1/bin/protoc)

#set(Protobuf_INCLUDE_DIR /home/wangsuwei/bin/protocbuf_2_6_1/include)

#set(Protobuf_LIBRARIES /home/wangsuwei/bin/protocbuf_2_6_1/lib)

find_path(Protobuf_INCLUDE_DIR

    google/protobuf/service.h

    PATHS ${Protobuf_DIR}/include NO_DEFAULT_PATH

)

find_path(Protobuf_INCLUDE_DIR

    google/protobuf/service.h

    PATHS ${Protobuf_DIR}/include

)

find_library(Protobuf_LIBRARIES NAMES libprotobuf.so   PATHS ${Protobuf_DIR}/lib NO_DEFAULT_PATH)

find_library(Protobuf_LIBRARIES NAMES libprotobuf.so   PATHS ${Protobuf_DIR}/lib )

find_library(Protobuf_LITE_LIBRARIES NAMES libprotobuf-lite.so   PATHS ${Protobuf_DIR}/lib NO_DEFAULT_PATH)

find_library(Protobuf_LITE_LIBRARIES NAMES libprotobuf-lite.so   PATHS ${Protobuf_DIR}/lib)

find_library(Protobuf_PROTOC_LIBRARIES NAMES libprotoc.so   PATHS ${Protobuf_DIR}/lib NO_DEFAULT_PATH)

find_library(Protobuf_PROTOC_LIBRARIES NAMES libprotoc.so   PATHS ${Protobuf_DIR}/lib )

find_package_handle_standard_args(PROTOBUF DEFAULT_MSG Protobuf_INCLUDE_DIR Protobuf_LIBRARIES Protobuf_LITE_LIBRARIES Protobuf_PROTOC_LIBRARIES)

if(PROTOBUF_FOUND)

    set(PROTOBUF_DIR ${Protobuf_DIR})

    set(PROTOBUF_INCLUDE_DIR ${Protobuf_INCLUDE_DIR})

    set(PROTOBUF_LIBRARIES ${Protobuf_LIBRARIES})

    set(PROTOBUF_LITE_LIBRARIES ${Protobuf_LITE_LIBRARIES})

    set(PROTOBUF_PROTOC_LIBRARIES ${Protobuf_PROTOC_LIBRARIES})

    #message(STATUS "Found gflags  (include: ${GFLAGS_INCLUDE_DIR}, library: ${GFLAGS_LIBRARY})")

    mark_as_advanced(PROTOBUF_LITE_LIBRARIES PROTOBUF_PROTOC_LIBRARIES

                     PROTOBUF_LIBRARIES Protobuf_INCLUDE_DIR PROTOBUF_DIR PROTOBUF_PROTOC_EXECUTABLE)

endif()

 

问题13 opencv找不到部分路径

make -j报错

猜测是因为opencv是我自己装的

dependencies强制改:

set(OpenCV_DIR "/home/wangsuwei/program/opencv3")

set(OpenCV_INCLUDE_DIRS "/home/wangsuwei/program/opencv3/include")

set(OpenCV_LIBS "/home/wangsuwei/program/opencv3/libopencv_core.so /home/wangsuwei/program/opencv3/libopencv_highgui.so /home/wangsuwei/program/opencv3/libopencv_imgproc.so /home/wangsuwei/program/opencv3/libopencv_imgcodecs.so")

 

https://blog.csdn.net/haluoluo211/article/details/80559341

https://www.jianshu.com/p/39fc5e548310

 

问题14:undefined reference to 'ULx86_64_step

 

Glog links to libunwind atomically. You can remove libunwind to avoid the dependency. Or you can try to install libunwind-devel.

安装unwind

  1. 下载地址:https://github.com/libunwind/libunwind

  2. CFLAGS=-fPIC

  3. chmod +x autogen.sh

  4. ./autogen.sh --prefix=$HOME/bin --enable-shared

  5. make CFLAGS=-fPIC 

  6. make CFLAGS=-fPIC install  

  7. 重新安装 glog

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非root用户安装caffe 的相关文章

  • (记录)电脑维修指南

    问题 自己在2020年的时候花了将近1500块自己组装了一台计算机 xff0c 但是经常出现蓝屏 xff0c 自动重启 xff0c 并且显示硬件问题 xff0c 2022年的时候也拆开过修过一次 xff0c 也和客服battle了几次 xf
  • 代码复现问题以及解决

    问题 cuda版本不匹配 xff0c 对于版本不匹配问题真的很难受CPU版本还有GPU版本问题包安装 xff0c apex加速的安装 xff0c transformer版本也会限制python的版本程序运行 xff0c 如果程序写的是比较好
  • one-hot向量形式

    one hot向量 one hot向量将类别变量转换为机器学习算法易于利用的一种形式的过程 xff0c 这个向量的表示为一项属性的特征向量 xff0c 也就是同一时间只有一个激活点 xff08 不为0 xff09 xff0c 这个向量只有一
  • c语言中的位移位操作

    先要了解一下C语言里所有的位运算都是指二进制数的位运算 即使输入的是十进制的数 xff0c 在内存中也是存储为二进制形式 lt lt 用法 xff1a 格式是 xff1a a lt lt m xff0c a和m必须是整型表达式 xff0c
  • iOS动画(Core Animation)

    一 CABaseAnimation 移动动画 void testPositionAnimation CGFloat tempViewWidth 61 50 CGFloat tempViewY 61 300 UIView tempView 6
  • 使用Linux命令生成随机密码

    使用SHA算法来加密日期 xff0c 并输出结果的前10个字符 xff1a span class token function date span 43 s span class token operator span sha256sum
  • CoreData 从入门到精通(三)关联表的创建

    CoreData 从入门到精通 xff08 三 xff09 关联表的创建 上篇博客中讲了 CoreData 里增删改查的使用 xff0c 学到这里已经可以应对简单的数据存储需求了 但是当数据模型复杂起来时 xff0c 例如你的模型类中除了要
  • 安装golang开发环境,vscode

    官网 https golang google cn dl span class token builtin class name cd span data www span class token function wget span ht
  • Ubuntu16.04 display setting (xfce4-display-settings) segmentation fault 闪退

    虚拟机里装好Xubuntu16 04后 打开设置想调分辨率 不想一点开Display就闪退 使用命令行xfce4 display settings 来调用的话 报错语句为 segmentation fault 解决办法 初始化一下分辨率设置
  • 远程桌面无法连接远程计算机是什么原因?

    很多人在准备用 远程控制 另一台电脑进行相关操作的时候 xff0c 会出现提示说 远程桌面由于以下原因无法连接到远程计算机 xff0c 那么为什么会发生这种问题 xff0c 以及出现这种问题该怎么解决呢 xff1f 一起来看看吧 其实 xf
  • 安卓开发--连接到聚合网,获取JSON数据并解析(踩了好多好多坑)

    本文将会以从聚合网获得数据为例 xff0c 介绍如何在Android Studio中获取JSON并解析 这里做一个简单的天气查询的应用 文章目录 1 准备工作 导入依赖2 核心代码部分2 1 Get方式的http请求2 2 写出查询函数 x
  • W: GPG error: http://repo.mysql.com/apt/ubuntu bionic InRelease: (签名失败)

    签名失败了 安装MySQL8 0的时候遇到的问题 xff0c 当时执行了 apt get update的指令 xff0c 然后出现了下面一大堆 Hit 1 https download docker com linux ubuntu bio
  • 无需修改bios即可让任意主板实现NVME启动

    使用Clover四叶草引导加载NVMe驱动 除了对BIOS的硬改之外 xff0c 还有一种更安全的软件方案 xff1a 使用Clover四叶草引导加载NVMe驱动 Clover是著名的黑苹果引导软件 xff0c 这里借用它来实现对预引导 x
  • PC改电视盒子 无需配置 Android x86 TV 9镜像

    这几天在折腾将旧电脑改成安卓电视盒子 xff0c 发现网上的镜像着实麻烦 xff0c 如果没有vpn xff0c 每次装都要用命令跳过谷歌的自动更新 配置兼容arm 完事了还只能远程安装apk 这个镜像直接配置好了谷歌自动更新 兼容问题 自
  • ubuntu18.04中更换源

    安装很多软件时提示 unable to locate package 手动更换了阿里的软件源就顺畅了 xff0c 速度也很快 方法 xff1a 备份原文件 sudo cp etc apt sources list etc apt sourc
  • (Linux)Debian下安装JDK1.8.0

    昨晚花了两个多小时查资料 xff0c 在Debian下安装了jdk和tomcat xff0c 记录一下 查看Linux版本 xff1a uname span class hljs operator a span 我的是64位的 在oracl
  • 最全的Anaconda虚拟环境操作及Python常用命令 (持续更新---)

    Welcome to My Blog 文章唯一地址 xff1a https blog csdn net REAL liudebai article details 126185097 涵盖常见的Anaconda虚拟环境操作及Python常用
  • 提高Interface Builder高效工作的8个技巧

    原文转载自破船之家的博客 xff1a http beyondvincent com blog 2014 03 19 18 tips for working effectively with interface builder 提高Inter
  • C++ enum类型转换为string

    enum类型的值为int类型 xff0c 如 xff1a enum ElemName People Tree Car Text Cave QRcode Pillar xff0c 其中People的值是0 xff0c Tree的值是1 xff
  • KEIL5烧写成功,但是程序运行不了的原因

    很多种原因 xff0c 可能是配置原因 xff1a 比如

随机推荐

  • 老旧笔记本改造成便携KVM(键盘显示器)

    老旧笔记本改造成便携KVM xff08 键盘显示器 xff09 前言立项 拆机改造显示屏驱动键盘结构 结项 测试后记 前言 本来是一时兴起晒在微信朋友圈的几张图 xff0c 配文说明很短 想起网上有不少笔记本屏幕改造利用的帖子 xff0c
  • Python入门练习 计算两个日期相隔的天数

    今天我们来学习如何计算两个相隔日期的天数 xff0c 这里我们要引入一个模块datetime 首先 xff0c 定义一个表示日期的字符串 xff1a birthday 61 34 2002 03 14 34 然后 xff0c 利用datet
  • ubuntu22.04安装显卡驱动、CUDA及cudnn

    安装显卡驱动 CUDA及cudnn 显卡驱动自行下载安装Software amp Updates安装使用命令安行安装 Ubuntu22 04系统安装CUDA一 CUDA 是什么先查看有没有安装CUDA 在终端输入命令修改环境变量 Ubunt
  • ubuntu18.04创建Anaconda图形界面的快捷方式

    在桌面创建一个文件anaconda navigator desktop 用以下命令 编辑文件 xff1a gedit anaconda navigator desktop 输入以下命令 xff1a usr bin env xdg open
  • Jenkins----安装SSH Agent插件以支持添加节点时通过SSH方式注册

    1 安装SSH Agent和SSH Build Agents plugin插件插件 在 Manage jenkins Manage Plugins Available 中搜索SSH Agent和SSH Build Agents plugin
  • Python----安装Python包时报Microsoft Visual C 14.0 or greater is required的解决办法

    原文链接 Python 安装Python包时报Microsoft Visual C 43 43 14 0 or greater is required的解决办法 1 打开 微软下载页面 并登录 xff0c 登录后点击 下载 xff08 2
  • Python代码集----pathlib应用之获取指定目录下的所有文件

    原文链接 Python代码集 pathlib应用之获取指定目录下的所有文件 xff08 1 xff09 如下代码 xff0c 默认递归获取指定目录root dir下的所有文件 xff0c 当指定recursive参数为False时 xff0
  • git常用命令

    一 git工作原理图 二 git基础命令 0x01 git help span class token function git span span class token function help span span class tok
  • nohup 重定向的问题

    以前只知道使用nohup可以让一个程序后台执行 xff0c 但是生成的日志文件都放到nohup out中了 xff0c 不能自己指定 xff0c 尤其是在同一个目录下我需要让两个甚至多个程序都要后台执行时 xff0c 这样看日志就比较麻烦了
  • ShareSDK for IOS 的个人理解

    经过了半天的努力 xff0c 参照着官方的demo xff0c 终于把问题解决了 xff0c 其实官方的demo是很容易理解的个人比较建议 可前往http mob com下载官方Demo xff0c 里面有详细的文档说明以及教程 xff0c
  • 树莓派FFmpeg搭配rtmp服务器实现直播推流(一)

    目录 安装环境要求硬件软件 整体架构配置步骤搭建nginx rtmp服务器编译安装nginx和nginx rtmp module配置启动nginxffmpeg编译安装下载源码并编译安装x264下载源码编译安装ffmpeg可能遇到的错误 启动
  • JSP页面,通过条件判断来决定是否显示相关内容

    首先是在 lt td标签内进行设置 xff0c 也可以是 lt tr标签 xff0c 也可以是 lt table 标签 lt td id 61 34 tr3 34 style 61 34 display none 34 gt lt img
  • linux下的crontab使用

    名称 crontab 使用权限 所有使用者 使用方式 crontab u user file crontab u user l r e 说明 crontab 是用来让使用者在固定时间或固定间隔执行程序之用 xff0c 换句话说 xff0c
  • 【题解】洛谷P2651 添加括号III(gcd 数学)

    看到是入门难度结果看了半天也不知道啥做法 kkk大神给出了答案 xff0c a1肯定在分子上 xff0c a2肯定在分母上 xff0c 如果我们想让这个式子更有可能化成整数 xff0c 那么a1 a3 a4 an都应该在分子上 xff0c
  • 获取阿里云域名记录中的RecordID方法

    在初学通过阿里云API实现DDNS的过程中 xff0c 为找RecordID走了不少弯路 xff0c 现已经搞明白 留下方法供日后查看 1 以360安全浏览器为例 xff0c 在阿里云域名管理后台随便建立一条A记录 xff0c F12打开浏
  • [Java]-字符串,字符串排序(MSD,LSD)

    字符串 字符串处理算法在多个领域展现出其多样性与重要性 信息处理 xff1a 诸如根据给定关键字搜索网页等 基因组学 xff1a 根据密码子将DNA碱基转换为字符串并进行生物学研究 通信系统 xff1a 短信 xff0c 电子邮件的发送或者
  • spring boot 接入prometheus+grafana监控API

    1 基础配置 xff08 1 xff09 spring boot 版本 xff1a 2 3 12 RELEASE xff08 2 xff09 应用名称配置为 xff1a seckill client xff08 配置正式应用名后注意修改以下
  • SQL SERVER 创建所有表with nolock视图,用于读写分离

    执行一下SQL脚本 IF object id 39 tempdb tempString1 39 is not null Begin DROP TABLE tempString1 END DROP TABLE tmpOrganization
  • centos 安装nginx

    1 安装源 rpm Uvh https dl fedoraproject org pub epel epel release latest 7 noarch rpm rpm Uvh https mirror webtatic com yum
  • 非root用户安装caffe

    踩坑绵绵无绝期 xff0c 完美总结版 初步整理了一下 xff0c 不想继续整理了 xff0c 先这样吧 折腾了5天 xff0c 我是垃圾 此版适合 xff1a 没有root权限的普通孩子 对linux系统不熟悉 xff0c 里面可能有做的