2019-04-03 22:10:32 wf19930209 阅读数 569

linux下编译boost

下载boot库

官方下载地址

在这里插入图片描述

下载完成会解压。

编译

1.进入解压后的文件夹内

```
cd boost_1_69_0 
```
  1. 执行下面的语句

    ./bootstrap.sh --with-libraries=all --with-toolset=gcc
    
  • –with-libraries 指定编译哪些boost库,all的话就是全部编译,只想编译部分库的话就把库的名称写上,之间用 , 号分隔即可,可指定的库下面介绍
  • –with-toolset 指定编译时使用哪种编译器,Linux下使用gcc即可,如果系统中安装了多个版本的gcc,在这里可以指定gcc的版本,比如–with-toolset=gcc-4.4

命令执行完后看到如下所示即为成功:

```Building Boost.Build engine with toolset gcc... tools/build/src/engine/bin.linuxx86_64/b2
Detecting Python version... 3.6
Detecting Python root... /opt/anaconda3
Unicode/ICU support for Boost.Regex?... /usr
Generating Boost.Build configuration in project-config.jam...

Bootstrapping is done. To build, run:

    ./b2
    
To adjust configuration, edit 'project-config.jam'.
Further information:

   - Command line help:
     ./b2 --help
     
   - Getting started guide: 
     http://www.boost.org/more/getting_started/unix-variants.html
     
   - Boost.Build documentation:
     http://www.boost.org/build/doc/html/index.html

```
  1. 再执行下面的命令

    ./b2 toolset=gcc
    

可指定的库有:

库名 说明

  • atomic
  • chrono
  • context
  • coroutine
  • date_time
  • exception
  • filesystem
  • graph 图组件和算法
  • graph_parallel
  • iostreams
  • locale
  • log
  • math
  • mpi 用模板实现的元编程框架
  • program_options
  • python 把C++类和函数映射到Python之中
  • random
  • regex 正则表达式库
  • serialization
  • signals
  • system
  • test
  • thread 可移植的C++多线程库
  • timer
  • wave
  1. 编译后的库文件位置

    boost_1_69_0/bin.v2/libs/
    

    都在此文件夹内。

    在这里插入图片描述

安装到系统

执行下面的命令就可以安装到系统环境下(本质就是copy)

./b2 install --prefix=/usr
  • –prefix=/usr 用来指定boost的安装目录,不加此参数的话默认的头文件在/usr/local/include/boost目录下,库文件在/usr/local/lib/目录下。这里把安装目录指定为–prefix=/usr则boost会直接安装到系统头文件目录和库文件目录下,可以省略配置环境变量。

如果想让库立即生效,需要执行下面的命令

ldconfig
2018-07-20 11:59:15 mijichui2153 阅读数 785

一、 下载linux 版 rar压缩软件

linux平台默认是不支持RAR文件的解压,需要安装linux版本的RAR压缩软件,下载地址为:下载

 (如:64位的linux下载 RAR 5.60 for Linux x64

二、安装 rar

1、解压: tar -xzvf rarlinux-x64-5.6.0.tar.gz

2、编译: cd rar ; make

 

三、测试

1、rar x aa.rar #将aa.rar压缩文件解压到aa目录下,并保持原来压缩之前aa文件的目录组织结构。(推荐)

2、rar e aa.rar #将aa.rar压缩文件解压到当前目录,aa文件中原包含的目录全没有。

3、如果压缩文件包含密码,则执行解压命令后会出现提示输入密码。

2015-02-28 18:58:38 zhuweigangzwg 阅读数 2588

linux编译ffmpeg(一)

网上有很多ffmpeg编译的方法,但乱七八糟的比较多,今天编译了一下,下面是步骤,需要的可以看下。


一:需要的库

     可以上官网上下载最新版,不想上官网的可以下载下面的库,然后将下面的库解压并编译 “./configure” 。

1:faac-1.28.tar

http://download.csdn.net/detail/zhuweigangzwg/8463553

2:ffmpeg-2.5.3

http://download.csdn.net/detail/zhuweigangzwg/8463563

3:lame-3.99.5

http://download.csdn.net/detail/zhuweigangzwg/8463569

4:x264-0.142.x

http://download.csdn.net/detail/zhuweigangzwg/8463571

5:yasm-1.2.0

http://download.csdn.net/detail/zhuweigangzwg/8463575



再编译ffmpeg之前先编译如下库:

1:faac(如果上面的faac-1.28编译的时候有错误可以如下,否则cd到目录中编译)
# wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz
# tar xvfz faac-1.26.tar.gz
# cd faac 
# ./bootstrap 
# ./configure 
# make 
# make install

2:libmp3(如果上面的lame-3.99.5编译的时候有错误可以如下,否则cd到目录中编译
# wget http://downloads.sourceforge.net/lame/lame-3.97.tar.gz
# tar xzf lame-3.97.tar.gz
# cd lame-3.97 
# ./configure 
# make 
# make install

3:libX264如果上面的x264编译的时候有错误可以如下,否则cd到目录中编译
# /usr/local/bin/git clone git://git.videolan.org/x264.git x264
# cd x264 
# ./configure  --enable-shared --disable-asm 
# make 
# make install

可参考:http://www.cnblogs.com/littlehb/p/3914645.html



二:编译ffmpeg

cd到解压的ffmpeg,然后输入命令
./configure --enable-gpl --enable-nonfree --disable-shared --enable-static 
--enable-debug --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib  --enable-postproc --enable-bzlib --enable-zlib 
--enable-parsers --enable-libx264 --enable-libmp3lame --enable-libfaac  
 --enable-pthreads --extra-libs=-lpthread --enable-encoders --enable-decoders   --enable-avfilter --enable-muxers --enable-demuxers

make &&make install

三:遇到问题


可以看下这个链接:http://blog.chinaunix.net/uid-26212859-id-3256667.html
如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令
ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表. 

编辑/etc/ld.so.conf文件,在新的一行中加入库文件所在目录;例如所在目录在/usr/local/lib,在vim /etc/ld.so.conf 换一行直接添加:/etc/ld.so.conf。

运行ldconfig,以更新/etc/ld.so.cache文件;



2:编译的那些库(包括ffmpeg)默认会产生在/usr/local/bin和 /usr/local/include目录下 ,如果想改变路径可以用:
--prefix来改变路径.

3:ffmpeg/x264:ERROR: libx264 not found

可以看这个链接:http://blog.sina.com.cn/s/blog_54b5ea250100r53o.html

只要在配制configure时,添加额外的include/link路径应该能够解决问题,即增加开关:
       --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib
这个需要根据你x264编译、安装的实际配制修改

四:测试结果
 下面命令是利用rtmp服务器和ffmpeg转码率的命令,其他命令上网上自己查找。
./ffmpeg -i rtmp://test1.com:1935/myapp/teststream  -report -acodec libfaac -vcodec libx264 -profile:v main -level:v 31 -preset ultrafast   -r 25 -b:v 600k  -f flv rtmp://test1.com:1935/myapp/newstream



ffmpeg linux 下载地址:   http://johnvansickle.com/ffmpeg/    可以下载编译好的ffmpeg.

交流请加QQ群:62054820

QQ:379969650

2014-03-31 17:04:20 zhuxian2009 阅读数 2457

对于Linux,我属于半路出家。编译一个sip,也是一波三折;步骤一一记录如下

开发环境:ubuntu

1.下载sip库:libeXosip2-3.6.0.tar.gz  libosip2-3.6.0.tar.gz

下载地址:http://download.savannah.gnu.org/releases/exosip/


2.编译

解压以后,出现两个文件夹:


然后进行编译,一句一句执行,先切换到目标文件夹,在configure,在make,在make install,如下:

cd libosip2-3.6.0 
./configure
make
make install

cd libeXosip2-3.6.0
./configure --disable-openssl
make
make install

3.一个简单的demo

main.cpp

#include <eXosip2/eXosip.h>

int main()
{
	int i=0;
	i=eXosip_init();
	if(i!=0)
          return -1;
	printf("=========  %s",eXosip_get_version());//打印当前sip库的版本号
	getchar();
	return 0;
}

3.1编译(调用sip动态库):

g++ main.cpp -o main -leXosip2 -losip2  -losipparser2

运行(因为sip编译完的动态库在/usr/local/lib目录下):

LD_LIBRARY_PATH=/usr/local/lib ./main

3.2编译(调用sip静态库):

编译完的sip库的静态库也在/usr/local/lib目录下,我把他们考了出来,放在了工程目录的lib目录下

然后编译

g++ -pthread src/main.cpp -o main -L./lib -leXosip2 -losip2  -losipparser2 -lresolv

执行:

./main

运行结果



完成!

==============================================分割线===================================================

看上去好像很简单?但是却废了咱不少功夫。

首先,是编译,自然是想到:g++ main.cpp -o main   就OK了,可结果呢,报错:找不到函数undefined reference to `eXosip_init'


其次,是运行,直接

./main
不行,报错:./main: error while loading shared libraries: libeXosip2.so.7: cannot open shared object file: No such file or directory

找动态库...


再次,好吧,解决了动态库;就想,为何不能用静态库呢,多方便哪?代价就是又要花时间来研究一番

网上看了一番,知道了g++ -L <目录>  是加载目录下的说有静态库,于是来了一句

g++ src/main.cpp -o main -L./lib -leXosip2 -losip2  -losipparser2
结果又是一顿报错:

./lib/libeXosip2.a(eXutils.o): In function `_eXosip_dnsutils_srv_lookup':
/jiang/workspace/siplib/libeXosip2-3.6.0/src/eXutils.c:3040: undefined reference to `__res_query'
/jiang/workspace/siplib/libeXosip2-3.6.0/src/eXutils.c:3056: undefined reference to `__dn_expand'
/jiang/workspace/siplib/libeXosip2-3.6.0/src/eXutils.c:3074: undefined reference to `__dn_expand'
/jiang/workspace/siplib/libeXosip2-3.6.0/src/eXutils.c:3159: undefined reference to `__dn_expand'
./lib/libeXosip2.a(eXutils.o): In function `eXosip_dnsutils_naptr_lookup':
/jiang/workspace/siplib/libeXosip2-3.6.0/src/eXutils.c:3252: undefined reference to `__res_query'
/jiang/workspace/siplib/libeXosip2-3.6.0/src/eXutils.c:3284: undefined reference to `__dn_expand'
/jiang/workspace/siplib/libeXosip2-3.6.0/src/eXutils.c:3314: undefined reference to `__dn_expand'
/jiang/workspace/siplib/libeXosip2-3.6.0/src/eXutils.c:3397: undefined reference to `__dn_expand'
./lib/libosip2.a(port_sema.o): In function `osip_sem_init':
/jiang/workspace/siplib/libosip2-3.6.0/src/osip2/port_sema.c:170: undefined reference to `sem_init'
./lib/libosip2.a(port_sema.o): In function `osip_sem_destroy':
/jiang/workspace/siplib/libosip2-3.6.0/src/osip2/port_sema.c:182: undefined reference to `sem_destroy'
./lib/libosip2.a(port_sema.o): In function `osip_sem_post':
/jiang/workspace/siplib/libosip2-3.6.0/src/osip2/port_sema.c:193: undefined reference to `sem_post'
./lib/libosip2.a(port_sema.o): In function `osip_sem_wait':
/jiang/workspace/siplib/libosip2-3.6.0/src/osip2/port_sema.c:202: undefined reference to `sem_wait'
./lib/libosip2.a(port_sema.o): In function `osip_sem_trywait':
/jiang/workspace/siplib/libosip2-3.6.0/src/osip2/port_sema.c:211: undefined reference to `sem_trywait'
./lib/libosip2.a(port_thread.o): In function `osip_thread_create':
/jiang/workspace/siplib/libosip2-3.6.0/src/osip2/port_thread.c:55: undefined reference to `pthread_create'
./lib/libosip2.a(port_thread.o): In function `osip_thread_join':
/jiang/workspace/siplib/libosip2-3.6.0/src/osip2/port_thread.c:76: undefined reference to `pthread_join'
collect2: ld returned 1 exit status

再找...看到报错信息里面,pthread_create,线程?果然放入百度,出来答案,立马加入-pthread,支持多线程。

还有一堆报错,再加入-lresolv;

至此,告一段落。















2019-05-13 15:46:11 weixin_41665382 阅读数 92

Linux 编译安装swoole

1.下载 解压

[root@lar ~]# cd /usr/local/swoole
[root@lar swoole]# cd /usr/local/swoole
[root@lar swoole]# wget https://github.com/swoole/swoole-src/archive/master.zip -O swoole-src-master.zip
[root@lar swoole]# unzip swoole-src-master.zip

2.编译安装

[root@lar swoole]# cd swoole-src-master/
[root@lar swoole-src-master]# phpize
[root@lar swoole-src-master]# ./configure --with-php-config=/usr/local/php/bin/php-config 
[root@lar swoole-src-master]# make
[root@lar swoole-src-master]# make install

3.添加扩展

[root@lar swoole-src-master]# vim /usr/local/php/etc/php.ini

添加一行

extension=swoole.so;

4.查看是否添加成功

[root@lar swoole]# php -m | grep  swoole
swoole

此时已安装成功
5.查看swoole版本信息

[root@lar swoole]# php --ri swoole

swoole

Swoole => enabled
Author => Swoole Team <team@swoole.com>
Version => 4.4.0-alpha
Built => May 13 2019 15:05:53
coroutine => enabled
debug => enabled
trace_log => enabled
epoll => enabled
eventfd => enabled
signalfd => enabled
cpu_affinity => enabled
spinlock => enabled
rwlock => enabled
http2 => enabled
pcre => enabled
zlib => enabled
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
async_redis => enabled

Directive => Local Value => Master Value
swoole.enable_coroutine => On => On
swoole.display_errors => On => On
swoole.use_shortname => On => On
swoole.unixsock_buffer_size => 8388608 => 8388608

Linux 编译Openssl

阅读数 166

Linux内核编译

阅读数 88

没有更多推荐了,返回首页