-
异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
2019-07-04 08:07:16访问测试项目路径localhost:8080/hello 后台抛出异常:This application has no explicit mapping for /error, so you are seeing this as a fallback. 抛出此异常表示访问的页面url没有匹配到对应的值,原因有如下...访问测试项目路径localhost:8080/hello 后台抛出异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
抛出此异常表示访问的页面url没有匹配到对应的值,原因有如下三点:
- Application启动类的位置不对:要将Application类放在最外侧,即包含所有子包 ,spring-boot会自动加载启动类所在包下及其子包下的所有组件。如下图所示:
- springboot的配置文件有误:关于application.yml或application.properties文件中视图解析器的配置问题。在pom文件下的spring-boot-starter-paren版本较高时使用以下配置:spring.mvc.view.prefix/spring.mvc.view.suffix,当pom文件下的spring-boot-starter-paren版本较低时使用以下配置:spring.view.prefix/spring.view.suffix。
-
控制器的url访问路径与注解@GetMapping("/xxxx")不匹配,如下图所示:
-
Android Studio NDK CMake 指定so输出路径以及生成多个so的案例与总结
2017-02-28 13:06:081. 只能生成一个 so库,不能一次性生成多个 so库,之前的mk是可以有子模块的。 2. 每次生成的so所在的目录不是在 jniLibs下,虽然知道如果打包,会将它打包进去,但就是觉得看不见它,想提供给别人用,还要去某个...##前文
注意:此文的所有配置都是mac电脑下
一直想用Android Studio的新方式Cmake来编译JNI 代码,之前也尝试过,奈何有两个难题挡住了我- 只能生成一个 so库,不能一次性生成多个 so库,之前的mk是可以有子模块的。
- 每次生成的so所在的目录不是在 jniLibs下,虽然知道如果打包,会将它打包进去,但就是觉得看不见它,想提供给别人用,还要去某个目录找。
经过尝试,这两个问题都可以解决了。
2020年1月6号补充
如果Android工程有第三方so库,并且jni编译后使用下面的cmake指定输出目录到 jniLibs下,有可能会发生 so库重复的错误。
请采用以下方法避免错误:android { .......... packagingOptions { //解决AS BUG. 优先选择JNILIBS下的so库 pickFirst 'lib/arm64-v8a/libDriver.so' pickFirst 'lib/armeabi/libDriver.so' pickFirst 'lib/armeabi-v7a/libDriver.so' } }
生成单个so的案例
demo下载地址: http://download.csdn.net/detail/b2259909/9766081
直接看CMakeLists.txt文件:
#指定需要CMAKE的最小版本 cmake_minimum_required(VERSION 3.4.1) #C 的编译选项是 CMAKE_C_FLAGS # 指定编译参数,可选 SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign") #设置生成的so动态库最后输出的路径 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}) #设置头文件搜索路径(和此txt同个路径的头文件无需设置),可选 #INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/common) #指定用到的系统库或者NDK库或者第三方库的搜索路径,可选。 #LINK_DIRECTORIES(/usr/local/lib) add_library( native-lib SHARED src/main/cpp/native-lib.cpp ) target_link_libraries( native-lib log )
其中 各个设置都有说明。主要看这个:
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})
它将会把生成的so库按照你在 build.gradle 指定的 abi分别放置在 jniLibs下
非常好,先解决了第二个问题了。
生成多个so案例
还是上面那个demo,重新建一个module。
cpp的目录结构:
直接看CMakeLists.txt文件:
#指定需要CMAKE的最小版本 cmake_minimum_required(VERSION 3.4.1) #C 的编译选项是 CMAKE_C_FLAGS # 指定编译参数,可选 SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign") #设置生成的so动态库最后输出的路径 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}) #设置头文件搜索路径(和此txt同个路径的头文件无需设置),可选 #INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/common) #指定用到的系统库或者NDK库或者第三方库的搜索路径,可选。 #LINK_DIRECTORIES(/usr/local/lib) #添加子目录,将会调用子目录中的CMakeLists.txt ADD_SUBDIRECTORY(one) ADD_SUBDIRECTORY(two)
不同的地方是改为添加子目录:
#添加子目录,将会调用子目录中的CMakeLists.txt ADD_SUBDIRECTORY(one) ADD_SUBDIRECTORY(two)
这样就会先去跑到子目录下的 one 和 two 的CmakeLists.txt,执行成功再返回。
此时子目录one下的CmakeLists.txt:#继承上一层的CMakeLists.txt的变量,也可以在这里重新赋值 #C 的编译选项是 CMAKE_C_FLAGS # 指定编译参数,可选 #SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign") #生成so动态库 ADD_LIBRARY(one-lib SHARED one.cpp) target_link_libraries(one-lib log)
子目录two下的CmakeLists.txt:
#继承上一层的CMakeLists.txt的变量,也可以在这里重新赋值 #C 的编译选项是 CMAKE_C_FLAGS # 指定编译参数,可选 #SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign") #生成so动态库 ADD_LIBRARY(two-lib SHARED two.cpp) target_link_libraries(two-lib log)
最后生成了以下两个so文件,并自动按照abi分别放置在了 jniLibs下:
第一个问题也成功了。
总结
最后,除了 设定abiFilters 必须在 build.gradle
主要是发现CmakeLists.txt里 其实可以指定很多东西:- so输出路径 CMAKE_LIBRARY_OUTPUT_DIRECTORY
- .a 静态库输出路径 CMAKE_ARCHIVE_OUTPUT_DIRECTORY
- 获取当前编译的abi , ANDROID_ABI
- 编译选项:
CMAKE_C_FLAGS
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG/CMAKE_CXX_FLAGS_RELEASE - 子目录编译: ADD_SUBDIRECTORY
- #设置.c文件集合的变量
#当前cmakelists.txt所在目录的所有.c .cpp源文件 AUX_SOURCE_DIRECTORY(. SRC_LIST) #增加其他目录的源文件到集合变量中 list(APPEND SRC_LIST ../common/1.c ../common/2.c ../common/3.c ../common/4.c ../common/5.c ../common/WriteLog.c ) #生成so库,直接使用变量代表那些.c文件集合 add_library(mylib SHARED ${SRC_LIST})
6._执行自定义命令:
# copy头文件到 静态库相同文件夹下 add_custom_command(TARGET myjni PRE_BUILD COMMAND echo "executing a copy command" COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/myjni.h ${PROJECT_SOURCE_DIR}/../../../build/outputs/staticLib/myjni/${ANDROID_ABI} COMMENT "PRE_BUILD, so This command will be executed before building target myjni" )
最后,因为很多时候,JNI的参数还要转为C的方式,当我们在JAVA层写了native方法,android IDE自动提示红色,这时按下 ALT + ENTER 可以自动生成JNI下的方法声明,并且入参也帮我们转换好了。不过有时候这个插件不生效。
所以我写了一个JNI 的入参转为 C/C++的代码插件: JNI-Convert-Var,直接在 plugin 的仓库搜就有了。
最近尝试实现android studio的ALT + ENTER 可以自动生成JNI下的方法声明,结果发现好多IntelliJ IDEA的接口不熟悉。 只能先放弃了,以下是我的逻辑:当鼠标点击在 Native声明方法上时:
- 检查文件类型,如果为java就继续
- 获取当前行的上下共三行字符串数据,使用正则表达式获取native声明的完整方法。
- 检查当前模块目录下的jni或者cpp目录下的.c或者.cpp文件。
- 如果没有文件,弹窗让用户创建一个C/C++文件,并追加转换后(如何转换会有一个专门的类)的Java2C方法在文件末尾. 在IDE打开此文件。
- 如果JNI或者cpp目录有一个以上的C/C++文件, 弹窗让用户选择一个C/C++文件或者创建,之后打开文件追加转换后(如何转换会有一个专门的类)的Java2C方法在文件末尾. 。 在IDE打开此文件。
上面逻辑中:
- 文件类型 ,IntelliJ IDEA 的plugin开发API中可以获取到
- 获取当前行的上下共三行字符串数据 ,IntelliJ IDEA 的plugin开发API中可以获取到
- 模块目录的API暂时没找到
- 在IDE打开C/C++文件,不知道用什么接口
-
SO_SNDTIMEO和SO_RCVTIMEO
2017-08-23 16:24:00SO_SNDTIMEO和SO_RCVTIMEO这两个套接字选项用来设置超时时间的,看代码吧。 [mapan@localhost sockOption]$ ls client.cpp makefile server.cpp [mapan@localhost sockOption]$ cat client.cpp #include #include ...SO_SNDTIMEO和SO_RCVTIMEO这两个套接字选项用来设置超时时间的,看代码吧。
[mapan@localhost sockOption]$ ls client.cpp makefile server.cpp [mapan@localhost sockOption]$ cat client.cpp #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <errno.h> #include <malloc.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/ioctl.h> #include <stdarg.h> #include <fcntl.h> #include <sys/types.h> #include <sys/wait.h> #include <netinet/in.h> #include <arpa/inet.h> #include <signal.h> #define MAXLINE 4096 int main(int argc,char **argv) { int connfd,ret; char sendbuf[400000]={0}; struct sockaddr_in servaddr; if(argc != 2) { printf("error\n"); } connfd=socket(AF_INET,SOCK_STREAM,0); memset(&servaddr,0,sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_port=htons(6666); inet_pton(AF_INET,argv[1],&servaddr.sin_addr); connect(connfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); struct timeval stTimeValStruct; stTimeValStruct.tv_sec=5; stTimeValStruct.tv_usec=0; setsockopt(connfd,SOL_SOCKET,SO_SNDTIMEO,&stTimeValStruct,sizeof(stTimeValStruct)); while(1) { ret= write(connfd,sendbuf,sizeof(sendbuf)); printf("ret=%d\n",ret); } close(connfd); return 0; } [mapan@localhost sockOption]$ cat server.cpp #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <errno.h> #include <malloc.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/ioctl.h> #include <stdarg.h> #include <fcntl.h> #include <sys/types.h> #include <sys/wait.h> #include <netinet/in.h> #include <arpa/inet.h> #include <signal.h> #define MAXLINE 4096 int main() { int listenfd,acceptfd; struct sockaddr_in servaddr; listenfd=socket(AF_INET,SOCK_STREAM,0); memset(&servaddr,0,sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_port=htons(6666); servaddr.sin_addr.s_addr=htonl(INADDR_ANY); bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); listen(listenfd,10); acceptfd=accept(listenfd,(struct sockaddr *)NULL,NULL); getchar(); close(acceptfd); close(listenfd); return 0; } [mapan@localhost sockOption]$ cat makefile all:server client server.o:server.cpp g++ -c server.cpp client.o:client.cpp g++ -c client.cpp server:server.o g++ -o server server.o client:client.o g++ -o client client.o clean: rm -f server client *.o [mapan@localhost sockOption]$
编译并运行,客户端需要新打开一个窗口执行。
[mapan@localhost sockOption]$ make g++ -c server.cpp g++ -o server server.o g++ -c client.cpp g++ -o client client.o [mapan@localhost sockOption]$ ./server
[mapan@localhost sockOption]$ ./client 127.0.0.1 ret=400000 ret=400000 ret=400000 ret=254012 ret=-1 ret=-1 ^C [mapan@localhost sockOption]$
再看看看接收缓冲区和发送缓冲区:
[mapan@localhost ~]$ netstat -nap | grep 6666 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 6151/./server tcp 138900 0 127.0.0.1:6666 127.0.0.1:59104 ESTABLISHED 6151/./server tcp 0 1315113 127.0.0.1:59104 127.0.0.1:6666 FIN_WAIT1 - [mapan@localhost ~]$
虽然我们没有获取到发送缓冲区的最大的上限值,但是发送缓冲区确实满了,write返回-1,证明write失败了。如果我们没有设置超时时间,write就会一直阻塞在那里。
发送缓冲区为什么会满?你首先要懂得write是干嘛的,它可不是发送数据。write是将用户进程中的数据拷贝到发送缓冲区中,如果发送缓冲区满了,write就会返回-1。发送数据是跟write没有关系的,那是协议做的事。由netstat可以看到对端接收缓冲区有数据,而且已经满了。所以数据堆积在发送缓冲区发不出去,导致发送缓冲区满了。
我们设置超时时间为5秒,write会阻塞在那里5秒,然后返回。
参考资料:unix网络编程卷一
-
cuda:Missing recommended library: libGLU.so,libX11.so,libXi.so,libXmu.so
2017-03-13 11:57:07安装cuda时可能有下面的信息 Installing the CUDA Toolkit in /usr/local/cuda-8.0 ... Missing recommended library: libGLU.so Missing recommended library: libX11.so Missing recommended library: libXi.so安装cuda时可能有下面的信息
Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so原因是缺少相关的依赖库,安装相应库就解决了:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
再次安装,就不再提示了
$sudo ./cuda_8.0.61_375.26_linux.run
Do you accept the previously read EULA?
accept/decline/quit: acceptInstall NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
(y)es/(n)o/(q)uit: nInstall the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: yEnter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: yInstall the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: yEnter CUDA Samples Location
[ default is /home/guyadong ]:Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
Installing the CUDA Samples in /home/guyadong …
Copying samples to /home/guyadong/NVIDIA_CUDA-8.0_Samples now…
Finished copying samples.===========
= Summary =
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-8.0
Samples: Installed in /home/guyadong
Please make sure that
- PATH includes /usr/local/cuda-8.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as rootTo uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
To install the driver using this installer, run the following command, replacing with the name of this run file:
sudo .run -silent -driverLogfile is /tmp/cuda_install_13101.log
Signal caught, cleaning up参考:
-
Java调用so文件
2019-02-14 11:39:06公司的硬件让我帮忙调用一个so文件,想着一直都没机会自己写一个jni,于是就答应了,在调用的过程中还踩了不少坑,特地写一篇博客记录一下。 一、使用技术 原本是想直接用java自带的jni,但是我们硬件只给了一个so... -
Android apk中so库文件未压缩
2020-03-05 17:59:12查看apk包,发现apk 包中so库文件未被压缩. 但是一个类似项目,相同版本却没有问题 升级前 升级后 升级后Raw File Size 正好是未压缩的大小 可能原因 不同版本AGP gradle build task 实现不一样, 再某情况下回不进行... -
so文件
2019-04-02 13:52:20SO文件是Linux下共享库文件,它的文件格式被称为ELF文件格式。由于Android操作系统的底层基于Linux系统,所以SO文件可以运行在Android平台上。Android系统也同样开放了C/C++接口供开发者开发Native程序。由于基于... -
.so .so.1区别
2019-05-11 15:06:35细深的先不讲,我只知道使用.so时是gcc main.c-ltest 使用.so.1时是gcc main.c test.so.1 -
【我的Android进阶之旅】Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
2016-04-16 14:46:38为什么你需要重点关注so文件 App中可能出错的地方 其他地方也可能出错 使用android-21平台版本编译的so文件运行在android-15的设备上 混合使用不同C运行时编译的so文件 没有为每个支持的CPU架构提供对应的so文件 将... -
openwrt 缺少 libc.so.6 libm.so.6 libpthread.so.0
2019-08-14 21:39:58在开发openwrt时,编译内核的时候,自己写的代码在openwrt 编译报错,提示缺少依赖库文件 Package Gateway_Auto is missing dependencies for the following libraries: ...libc.so.6 libm.so.6 libpthread.so.0 ... -
frida so Hook 动态获取so地址
2019-05-21 09:19:57# -*- coding: UTF-8 -*- import frida, sys jsCode = """ Java.perform(function(){ Process.enumerateModules({ onMatch: function(exp){ if(exp.name == 'libhello.so'){ ... -
SO_SNDBUF和SO_RCVBUF
2018-04-24 21:08:12SO_SNDBUF:TCP发送缓冲区的容量上限; SO_RCVBUF:TCP接受缓冲区的容量上限; 注意:缓冲区的上限不能无限大,如果超过内核设置的上限值,则以内核设置值为准(sysctl -a命令查看)。 ... -
Android将so库封装到jar包中并加载其中的so库
2020-04-23 15:37:10因为so库放入jar之后,so就不是一个独立的.so文件了,用System.load()加载就会提示找不到这个库,所以要想加载这个so 就需要把so 从jar 中提取出来,保存为临时文件,然后再加载。但是不能直接提取.so文件,需要把.... -
SO_SNDBUF and SO_RECVBUF
2014-08-27 15:35:14参见 http://stackoverflow.com/questions/4257410/what-are-so-sndbuf-and-so-recvbuf ...The "SO_" prefix is for "socket option", so yes, these are per-socket settings for the per-socket buffers. There ar -
libcudart.so.9.0 && libcusolver.so.9.0 && libcublas.so.9.0
2018-03-09 21:29:24在使用CUDA的过程中,常会遇到以下问题:Error: libcudart.so.9.0: cannot open shared object file: No such file or directory // 或者 Error: libcusolver.so.9.0: cannot open shared object file: No such file... -
vscode 编译so库,并且引用so库调试
2019-08-29 13:30:04本周就IDE选择、cpp程序编译、so库引用、jni编译方面走了一遍,从C++程序编写、编译调试,引用so库走了一遍,基本还好,没碰到什么难点! 1. IDE选择VsCode,只要下载几个插件就可以进行开发了: 2.在Vscode 中... -
linux动态库so调用外部so,运行时出现undefined symbol
2018-09-12 09:21:45一、当前工程的.so文件和生成该.so文件的工程代码不一致,当前.so文件中不包含工程代码中的某些函数。例如我的工程代码中有NdarrytoImage()这个函数,但是我使用的.so生成时却没有该函数,则在编译的时候不包含... -
Android so文件浅析
2018-05-19 17:50:30Android中的so文件是动态链接库,是二进制文件,即ELF文件。多用于NDK开发中。 二. 基础知识 三. so文件格式解析 so文件即ELF文件,是一个二进制文件,我们可以用UltraEdit打开查看。如下: 上面有一处很... -
import tensorflow 提示无法加载 libnvinfer.so.6 libnvinfer_plugin.so.6
2020-02-25 21:49:57我在阿里云的ECS使用docker运行tensorflow的时候,当import tensorflow是提示无法加载 libnvinfer.so.6 libnvinfer_plugin.so.6的错误信息。 2020-02-25 09:24:32.442272: W tensorflow/stream_executor/platform/... -
68-套接字超时(SO_RCVTIMEO 与 SO_SNDTIMEO)
2017-05-02 10:22:23设置套接字超时的第三个技术是使用套接字选项 SO_RCVTIMEO 与 SO_SNDTIMEO,它的优势在于一次设置,所有应用于该套接字的操作都自动带有超时时间。它就好像是一个全局开关。比如对于 SO_RCVTIMEO 来说,如果设置了它... -
Android libdvm.so 与 libart.so
2015-03-31 15:33:44Android libdvm.so 与 libart.so 系统升级到5.1之后,发现system/lib/下面没有libdvm.so了,只剩下了libart.so。对于libart模式,从4.4就在Developer optins里面就可以手动选择,到5.1算是转正了。 1,... -
SOT-23、SOT-223封装的三极管、MOS管
2020-01-07 13:29:30SOT-23、SOT-223封装的三极管、MOS管 SOT-23 三极管 无论是PNP还是NPN,1脚为基极,2脚为发射极,3脚为集电极。 MOS 管 无论是P沟道还是N沟道,1脚为栅极,2脚为源极,3脚为漏极。 SOT-223 三极管 无论是PNP还是... -
Linux下JNA so路径问题以及打包成Jar之后.so文件加载路径问题以及在docker中读取.so的问题
2019-01-18 10:21:22在Linux下整合.so库到java工程中的过程中,使用JNA遇到加载不到so的问题。现在总结一下: 1.在Linux下,IDEA中。.so的库只会识别在/target/classes/路径下。因此手动直接将.so放到此处就可以识别。 (注意到没有,这... -
linux 动态加载so调用外部so,运行时出现undefined symbol
2018-05-17 07:56:24linux 应用程序application中动态加载 libA.so, 而libA.so调用了libB.so中的函数funcB();application运行时出现undefined symbol: funcB用ldd -r application,发现确实没有加载动态链接库libB.so。用-lB编译选项,... -
Centos7安装opencv-python缺少共享库(libSM.so.6, libXrender.so.1, libXext.so.6)的解决办法
2019-05-15 17:45:32Centos7安装opencv-python缺少共享库(libSM.so.6, libXrender.so.1, libXext.so.6)的解决办法 今天在服务器上安装opencv-python时,前后报了如下缺少共享库的错误 ImportError: libSM.so.6: cannot open shared ... -
Centos中用jna调用.so文件详细过程(.so文件嵌套调用.so文件)
2017-07-13 12:46:33写出本文,作者本人也是花去了一些时间的,在摸索的过程中遇到了很多问题,然后通过度娘来解决这些问题,最后进行一下的这些总结。...2、生成第一个.so文件libtest1.so (1)先写一个简单的test1.h头 -
linux 什么是SO文件
2018-11-23 16:15:28so其实就是shared object的意思。今天看了上面的博客,感觉好吃力。赶紧做个笔记记录一下。下面的内容大多都是连接中的,穿插我自己的笔记 牵扯到ELF格式,gcc编译选项待补,简单实用的说明一下,对Linux下的so... -
libpng16.so.16,libjpeg.so.9 安装
2017-12-08 23:04:58libpng16.so.16 安装安装face_recognition后,在命令行执行 face_recognition 命令。提示 错误: ImportError: libpng16.so.16: cannot open shared object file: No such file or directory 解决办法: 1、到链接 ... -
setsockopt中SO_RCVTIMEO和SO_SNDTIMEO
2015-08-26 14:49:04SO_RCVTIMEO和SO_SNDTIMEO套接口选项可以给套接口的读和写,来设置超时时间, 一、在unix网络编程中,说是他们只能用于读和写,而像 accept和connect都不能用他们来设置. 可是我在阅读内核源码的过程中看到,在linux中,... -
聚安全libsgmain.so、libsgavmp.so初步分析
2019-02-15 15:28:52版本:libsgmainso-5.4.2010.so 一、静态分析: 1.IDA分析: Binary data 16 is incorrect, maximum possible value is 0. Do you want to continue with the new value? 经过简单的修复以后可以打开: ...
-
【2021】UI自动化测试框架(Selenium3)
-
面向智能电力的无线光技术研究与进展
-
2010-2020年暨南大学827管理运筹学考研真题
-
【数据分析-随到随学】互联网行业业务指标及行业数
-
安装vmtools实现物理机和Kali之间自由复制和拖拽文件
-
一维链状镉有机膦酸配合物的合成、结构和荧光性质研究
-
【数据分析-随到随学】Spark理论及实战
-
Bias-drift-free Mach–Zehnder modulators based on a heterogeneous silicon and lithium niobate platform
-
类金刚石I2-II-IV-VI4型红外非线性光学材料的结构与性能关系研究
-
kubernetes-dashboard.yaml
-
医用Ti/HA激光沉积过程中的粉末分离及其抑制方法
-
第3章 入门程序、常量、变量
-
ProBuilder快速原型开发技术
-
【2021】UI自动化测试Selenium3
-
JDK8精简版 单独JRE运行环境
-
Day23(稀疏数组,什么是面向对象)
-
在Kali系统配置国内源,设置KALI偏好,更新KALI软件
-
国产工业级准单模光纤振荡器实现5.16 kW激光输出
-
第5章-搜索
-
晶硅异质结太阳电池表面三层减反膜的设计与分析