lib

静态编译、动态编译、静态链接库、动态链接库

百般思念 提交于 2019-11-30 15:50:02
(转载 来自https://www.cnblogs.com/lisuyun/p/3953589.html) 1.静态编译: 编译器在编译可执行文件时,把需要用到的对应动态链接库(.so或.ilb)中的部分提取出来,链接到可执行文件中去, 使可执行文件在运行时不需要依赖于动态链接库. 2.动态编译: 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一 方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接 库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文 件就不能运行。 静态编译: 静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序。 动态编译: 动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时 候需要相应的dll文件支持。 动态链接库: 创建一个动态链接库,会生成x.dll,x.lib 动态链接库有两种加载方式: 1.一种是静态加载,就是在编译的时候就载入动态链接库。此种方法可调用类方法. 可执行程序静态加载动态链接库需要三个文件 x.dll, x.lib, x.h 可执行程序的头文件加入: #include

python打包成so文件

我怕爱的太早我们不能终老 提交于 2019-11-30 15:08:05
wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip install cython .编写setput.py文件: setup.py文件内容如下: from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize extensions = [Extension("ln_facedetector", ["ln_facedetector.py"], include_dirs=["/usr/local/lib"], libraries=["/usr/local/lib/python3.6/site-packages/cv2/cv2.cpython-36m-x86_64-linux-gnu.so", "/usr/local/lib/python3.6/site-packages/dlib.cpython-36m-x86_64-linux-gnu.so"], library_dirs=["/usr/local/lib/python3.6/site-packages/cv2","/usr/local/lib/python3.6/site-packages"])]

What does the TypeScript “lib” option really do?

若如初见. 提交于 2019-11-30 12:43:47
I have still not been able to find good answer for this. The "target" option defines, what version of Javascript the result will run on. The "lib" option is less clearly described anywhere. Seems like it is a more granular way to describe the target environment, but then it seems strange it affects what you can write in the .ts source files. Thought TS what as superset of JS, so why does it affect whether, e.g., Promise() is available or not? This seems like it does not only define the target but also affect what functions you have available in Typescript. Can someone explain that clearly or

Windows下编译Libevent

我与影子孤独终老i 提交于 2019-11-30 12:35:47
官网:http://libevent.org 下载了号称最稳定的2.0.22版。 编译环境:VS2013+Win10 1 下载得到libevent-2.0.22-stable.tar,解压。 2 打开“VS2013开发人员命令提示”工具。 3 命令提示工具中,进入到你的解压目录,运行 nmake /f Makefile.nmake 4 成功后,libevent-2.0.22-stable下得到三个静态库: libevent_extras.lib libevent_core.lib libevent.lib 测试: 1 在VS2013新建一个控制台程序叫gate 2 在gate.cpp同目录下,新建 libevent文 件夹,里面建 lib 目录。这个可以建在别的地方,后面VS设置库目录的时候设置对即可。 3 将上面的三个lib拷贝到 libevent/lib/ 目录下 4 将libevent-2.0.22-stable\ include 文件夹拷贝到第2步创建的 libevent 目录下,这样libevent文件夹下共有两个目录 include lib 5 将libevent-2.0.22-stable\ WIN32-Code \下的所有文件拷贝到 libevent\include\ 目录下。最终的libevent目录如下        6 项目添加附加包含目录 $

QT的一些配置

心不动则不痛 提交于 2019-11-30 11:57:36
# 程序图标 RC_ICONS = logo.ico # 版本号 VERSION = 1.0.1 # 语言 # 0x0004 表示 简体中文 # 详见 https://msdn.microsoft.com/en-us/library/dd318693%28vs.85%29.aspx RC_LANG = 0x0004 # 公司名 QMAKE_TARGET_COMPANY = 四川XX科技 # 产品名称 QMAKE_TARGET_PRODUCT = XX辅助工具 # 详细描述 QMAKE_TARGET_DESCRIPTION = XX配置工具 # 版权 QMAKE_TARGET_COPYRIGHT = Copyright(C) 2019 ##################配置库的相对路径############################# INCLUDEPATH += $$PWD/ffmpeg/include DEPENDPATH += $$PWD/ffmpeg/lib ##################mingw配置方式############################# LIBS += $$PWD/ffmpeg/lib/libavformat.dll.a LIBS += $$PWD/ffmpeg/lib/libavutil.dll.a LIBS += $$PWD

荔枝派Zero(V3s)| ARM 安装 iperf3.7 测试TCP通信吞吐量

旧城冷巷雨未停 提交于 2019-11-30 11:52:35
1、iperf iperf是一个基于Client/Server的网络性能测试工具,可以测试TCP、UDP和SCTP带宽质量,能够提供网络吞吐率信息,以及震动、丢包率,最大段和最大传输单元大小等统计信息,帮助我们测试网络性能,定位网络瓶颈。其中抖动和丢包率适应于UDP测试,二带宽测试适应于TCP和UDP。 iperf的好处是纯粹发包和接收,防止硬盘拖后腿,影响测试结果。对于时延,iperf无能无力。但是iperf能够计算抖动。在iperf测试中需要发送大量的包,因此计算出来的抖动值,就是连续发送时延差值的平均值。 iperf是一个开源软件,其源码在GitHub上,地址: https://github.com/esnet/iperf 。 下载最新版本源码包,下载地址: http://downloads.es.net/pub/iperf/ 。本文以 iperf-3.7.tar.gz 版本为例。 2、安装 2.1 解压 tar xzf iperf-3.7.tar.gz cd iperf-3.7/ 2.2 安装与编译 在主目录下新建安装目录: mkdir ../iperf_install 进行安装配置: ./configure --host=arm-linux-gnueabihf --prefix=/home/han/iperf_install 其中, –host: 指定交叉编译工具

如何在Ubuntu 11.10下成功安装Java

守給你的承諾、 提交于 2019-11-30 11:26:30
升级到ubuntu 11.10之后,由于库里没有sun-java6-jdk,需要自行安装。因此,到Oracle网站下载了Java 6u27(为什么不下java7呢?因为目前支持的软件不多,另外如果真要的话,也可以很方便的切换到Java7),然后就可以开始手动安装了。 首先创建Java的目录,然后将下载下来的文件解压到该目录中: $ sudo cp jdk-6u27-linux-i586.bin /usr/lib/jvm $ cd /usr/lib/jvm $ sudo ./jdk-6u27-linux-i586.bin $ sudo mv jdk1.6.0_27/ java-1.6.0_27-sun/ $ sudo ln -s java-1.6.0_27-sun java-6-sun $ sudo rm jdk-6u27-linux-i586.bin 其次设置环境变量,主要是PATH、CLASSPATH和JAVA_HOME,注意PATH最后所添加的bin目录: $ sudo vi /etc/environment PATH="/usr/ local /sbin:/usr/ local /bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/u sr/lib/jvm/java-6-sun/bin" CLASSPATH= "/usr/lib/jvm

安装GeoIP2以及利用GeoIP2的API开发查询函数 踩过的雷——程序编译链接运行篇

狂风中的少年 提交于 2019-11-30 09:59:28
接上一篇,忘记把代码贴出来了……一会补上吧。 程序是写好了,但是折腾了好久,首先是" undefined reference to MMDB_open"等等这一系列的用的GeoLite API出现的错误,我本来以为是头文件的问题,但是查了一下linux下头文件的查询顺序是/lib /usr/lib /usr/local/lib 我在/usr/local/lib下其实是有这个需要引用的头文件的,并且我的头文件也在代码里头include了。 但是其实要注意一点 undefined reference是未引用而不是未定义,所以其实不是头文件的问题而是链接库的问题,就是程序在链接的时候找不到这个函数的实现了。我们使用的额外的库是libmaxminddb.so这一系列的,所以在gcc编译的时候加上这个库名就行了,这个库名要把前面的lib去掉并且把后缀.so或者.a去掉,比如说libmaxminddb.so,他的库名就是maxminddb,加上这个库名呢要用-l再无缝隙直接加上库名。为什么其他的不用加上库名只有这个用呢,可能其他是默认的吧啥的,我们这里这个库不是常用库所以要声明一下我们用到了这个库,不然啥库都给你链接上多累啊。 使用示例: gcc geoip.c -lmaxminddb geoip.c是我们的代码文件。 之后要声明一下-L 用法,这个就是不在/lib /usr/lib /usr

Unable to load native-hadoop library for your pla

杀马特。学长 韩版系。学妹 提交于 2019-11-30 06:34:15
导致这个错的原因: 1.hadoop/lib/native/本地库不存在。 2. hadoop/lib/native/本地库 与当前操作系统的版本位数不一致。 确定错误的原因: 1.查看hadoop/lib/native是否存在。 2.设置hadoop的日记级别位debug,在环境变量中添加:export HADOOP_ROOT_LOGGER=DEBUG,console,重启hadoop后,仔细观察日志,看看到底是native lib没找到还是版本不一致。 解决方法:找到合适的native lib 1.如果是apache的hadoop,则直接重新编译hadoop,编译方法网上很多。 2.如果是cloudera的hadoop,则找到tar.gz版本的rpm包(系统、版本都需对应,http://archive.cloudera.com/cdh4/,找到你的的操作系统,centos和rhel归一类,我找的是http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4.7.0/RPMS/x86_64/hadoop-2.0.0+1604-1.cdh4.7.0.p0.17.el6.x86_64.rpm文件),然后用压缩软件打开rpm,提取里面的lib/native文件,放到hadoop的lib/native下。 rm libhadoop.so

HBase伪分布部署

耗尽温柔 提交于 2019-11-30 06:29:30
1、基础配置 #配置主机名 hostnamectl set-hostname {master, node1, node2} #配置hosts cat <<EOF >> /etc/hosts 192.168.2.124 master 192.168.2.125 node1 192.168.2.126 node2 EOF #安装JDK yum install -y java-1.8.0-openjdk-devel.x86_64 #配置java路径 cat <<EOF | sudo tee /etc/profile.d/hbase-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64 export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar export PATH=$PATH:\$JAVA_HOME/bin EOF source /etc/profile.d/hbase-env.sh #新建用户 adduser hadoop echo "123456" | passwd --stdin hadoop usermod -aG wheel hadoop su - hadoop #SSH基于KEY的验证