jemalloc编译出错?没事,这里有成功的linux环境的编译及使用方案(★firecat推荐★)

69 篇文章 97 订阅
64 篇文章 7 订阅

jemalloc是facebook推出的

https://github.com/jemalloc/jemalloc

http://jemalloc.net/

源码里面有INSTALL.md,里面有安装说明,但是不可完全参照,需要调整步骤如下:

先准备好gcc编译环境,然后把docbook-style-xsl依赖库安装好。

[root@localhost ]# yum -y install docbook-style-xsl

如果没有docbook-style-xsl,运行make dist会报错:

[root@localhost ]# make dist
/usr/bin/xsltproc -o doc/jemalloc.html doc/html.xsl doc/jemalloc.xml
warning: failed to load external entity "/html/docbook.xsl"
compilation error: file doc/html.xsl line 2 element import
xsl:import : unable to load /html/docbook.xsl
make: *** [doc/jemalloc.html] Error 5
 

正式开始编译:

chmod -R 777 jemalloc-4.5.0

cd  jemalloc-4.5.0

./autogen.sh --with-jemalloc-prefix=je_
make dist
make
make install

 

最终头文件和库文件的安装路径分别是:

usr/local/include/jemalloc 
usr/local/lib

 

本人环境是CentOS 7.3,gcc版本是4.8.5。

请注意:

(1)chmod这个步骤很重要,否则jemalloc文件夹下有大量.sh文件,最终会因为没有权限而编译失败。

(2)./autogen.sh 务必带上参数!即 "./autogen.sh --with-jemalloc-prefix=je_",否则将来编程调用时会报错,例如:

undefined reference to `je_malloc'

undefined reference to `je_realloc'

 

CMakeList.txt文件

cmake_minimum_required(VERSION 2.8)

project(myDemo)

SET(JEMALLOC_INCLUDE_DIR /usr/include/jemalloc)
SET(JEMALLOC_LIB /usr/local/lib)

INCLUDE_DIRECTORIES(${JEMALLOC_INCLUDE_DIR})

LINK_DIRECTORIES(${JEMALLOC_LIB})

#ADD_EXECUTABLE必须在TARGET_LINK_LIBRARIES前面,否则会报错
ADD_EXECUTABLE(${PROJECT_NAME} main.c)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} jemalloc)

 

 

----

引申阅读TCMalloc
TcMalloc(Thread-CachingMalloc)是google-perftools工具中的一个内存管理库,所以一般提到tcmalloc,其实就是指使用gperftools,编译tcmalloc也就是编译gperftools。 与标准的glibc库中malloc相比,TcMalloc在内存分配的效率和速度上要高很多,可以提升高并发情况下的性能,降低系统的负载。

TcMalloc比glibc的malloc具有更高的效率。如在主频为2.84GH的pc上,Glibc的malloc需要使用300ns的时间来执行malloc/free对,而tcmalloc只需要50ns来完成相同的操作(数据来自官方文档)。

TcMalloc使用线程内存池的方法,小对象(<=32K)是在内存池中进行分配,使用分配较多的内存空间来优化分配时间,并定时进行垃圾回收操作。而大对象(>32K)则直接在全局控制堆中分配。Tcmalloc可以有效减小多线程间的锁争用问题,对于小对象,甚至可以实现0争用。

TCMalloc是gperftools的一部分,除TCMalloc外,gperftools还包括heap-checker、heap-profiler和cpu-profiler。

https://github.com/gperftools/gperftools

https://www.jianshu.com/p/11082b443ddf

 

 

在Halcon中获取xld是通过读取dxf文件并进行一系列操作来实现的。首先需要使用read_contour_xld_dxf函数读取dxf文件的机械坐标数值,并存储在DxfContours中。然后使用union_adjacent_contours_xld函数来合并邻近的XLD,使得细小线段拼接起来,结果存储在UnionContours中。接下来可以使用count_obj函数获取UnionContours中的轮廓数量,并使用select_obj函数选择其中一个轮廓。然后可以使用get_contour_xld函数获取该轮廓的坐标值。另外,还可以使用length_xld函数获取轮廓的长度。最后,可以使用create_local_deformable_model_xld函数创建可变形模型,并使用get_deformable_model_contours函数获取模型的轮廓。如果需要进行镜像操作,可以使用hom_mat2d_reflect函数进行上下翻转,并使用affine_trans_contour_xld函数对UnionContours进行仿射变换。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Halcon读取dxf文件生成xld,然后实现点坐标遍历/缩放/镜像/求最大面积等操作(firecat推荐)](https://blog.csdn.net/libaineu2004/article/details/102821750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值