搜档网
当前位置:搜档网 › LINUX下编译ffmpeg-x264

LINUX下编译ffmpeg-x264

LINUX下编译ffmpeg-x264
LINUX下编译ffmpeg-x264

LINUX下编译ffmpeg-x264

1版本:

X264.r663,ffmpeg.r9453

2yasm

2.1 下载yasm新版本

要安裝x264,就需要用yasm來編譯。那就先裝個yasm吧。yasm下載網址:https://www.sodocs.net/doc/f1724961.html,/projects/yasm/releases/yasm-0.6.0.tar.gz

2.2 编译安装

#tar xzvf yasm-0.6.0.tar.gz

#cd yasm-0.6.0

#./configure --prefix=/usr/local/yasm

#make

#make instal l

3x264

3.1 编译

3.1.1编译静态库

3.1.2编译动态库

3.2 安装

由于一般ffmpeg采用静态连接x264,所以只需要编译安装x264静态库

#cp libx264.a /usr/lib

#cp x264.h /usr/include

4ffmpeg

4.1 下载

到FFmpeg官方下载最新的FFmpeg版本。CVS服务器地址如下:cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg。现在已改成SVN下载:

svn://svn.mplayerhq.hu/ffmpeg

4.2 编译安装

#./configure --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl --enable-pthreads

#make

#make install

make install结果:

1)头文件:/usr/local/include/ffmpeg

-rw-r--r-- 1 root root 5180 7月 3 17:18 swscale.h

-rw-r--r-- 1 root root 3053 7月 3 17:18 rtsp.h

-rw-r--r-- 1 root root 1712 7月 3 17:18 rtspcodes.h

-rw-r--r-- 1 root root 3797 7月 3 17:18 rtp.h

-rw-r--r-- 1 root root 7647 7月 3 17:18 rgb2rgb.h

-rw-r--r-- 1 root root 3062 7月 3 17:18 rational.h

-rw-r--r-- 1 root root 2408 7月 3 17:18 random.h

-rw-r--r-- 1 root root 3087 7月 3 17:18 opt.h

-rw-r--r-- 1 root root 2044 7月 3 17:18 mem.h

-rw-r--r-- 1 root root 1174 7月 3 17:18 md5.h

-rw-r--r-- 1 root root 1767 7月 3 17:18 mathematics.h

-rw-r--r-- 1 root root 1132 7月 3 17:18 lzo.h

-rw-r--r-- 1 root root 3599 7月 3 17:18 log.h

-rw-r--r-- 1 root root 1302 7月 3 17:18 intfloat_readwrite.h

-rw-r--r-- 1 root root 2343 7月 3 17:18 integer.h

-rw-r--r-- 1 root root 2943 7月 3 17:18 fifo.h

-rw-r--r-- 1 root root 9315 7月 3 17:18 common.h

-rw-r--r-- 1 root root 1223 7月 3 17:18 base64.h

-rw-r--r-- 1 root root 6020 7月 3 17:18 avutil.h

-rw-r--r-- 1 root root 2494 7月 3 17:18 avstring.h

-rw-r--r-- 1 root root 9406 7月 3 17:18 avio.h

-rw-r--r-- 1 root root 31796 7月 3 17:18 avformat.h

-rw-r--r-- 1 root root 95102 7月 3 17:18 avcodec.h

-rw-r--r-- 1 root root 993 7月 3 17:18 adler32.h

2)库文件:/usr/local/lib

drwxr-xr-x 2 root root 4096 7月 3 17:18 vhook

drwxr-xr-x 2 root root 4096 7月 3 17:18 pkgconfig

-rwxr-xr-x 1 root root 29412 7月 3 17:18 libavutil.so.49.4.1

lrwxrwxrwx 1 root root 19 7月 3 17:18 libavutil.so.49 -> libavutil.so.49.4.1

lrwxrwxrwx 1 root root 19 7月 3 17:18 libavutil.so -> libavutil.so.49.4.1

-rwxr-xr-x 1 root root 557856 7月 3 17:18 libavformat.so.51.12.1

lrwxrwxrwx 1 root root 22 7月 3 17:18 libavformat.so.51 -> libavformat.so.51.12.1

lrwxrwxrwx 1 root root 22 7月 3 17:18 libavformat.so -> libavformat.so.51.12.1

-rwxr-xr-x 1 root root 4105568 7月 3 17:18 libavcodec.so.51.40.4

lrwxrwxrwx 1 root root 21 7月 3 17:18 libavcodec.so.51 -> libavcodec.so.51.40.4

lrwxrwxrwx 1 root root 21 7月 3 17:18 libavcodec.so -> libavcodec.so.51.40.4

4.3 合并libavcodec和libavutil

1)新建一个目录make_my

2)拷贝需要的.o文件

a)#cp ffmpeg/libavcodec/*.o make_my

b)#mkdir make_my/i386

c)#cp ffmpeg/libavcodec/i386/*.o make_my/i386

d)#cp ffmpeg/libavutil/*.o make_my

3)合并libavcodec和libavutil成一个库(注意路径问题)

gcc -shared -Wl,-soname,libavcodec.so.51 -pthread -rdynamic -export-dynamic -Wl,--warn-common -Wl,--as-needed -Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavcodec

-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavformat

-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavutil -o libavcodec.so.51 bitstream.o utils.o allcodecs.o mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o resample.o resample2.o dsputil.o motion_est.o imgconvert.o mpeg12.o simple_idct.o ratecontrol.o eval.o error_resilience.o raw.o faandct.o parser.o rangecoder.o h263.o opt.o bitstream_filter.o audioconvert.o imgresample.o i386/fdct_mmx.o i386/cputest.o i386/dsputil_mmx.o i386/mpegvideo_mmx.o i386/motion_est_mmx.o

i386/simple_idct_mmx.o i386/idct_mmx_xvid.o i386/fft_sse.o i386/fft_3dn.o i386/fft_3dn2.o aasc.o ac3enc.o ac3tab.o ac3.o alac.o asv1.o atrac3.o mdct.o fft.o avs.o bethsoftvideo.o bmp.o bmpenc.o c93.o cavs.o cavsdsp.o golomb.o cinepak.o cljr.o cook.o cscd.o cyuv.o dca.o dnxhddec.o dsicinav.o dvbsubdec.o dvbsub.o dvdsubdec.o dvdsubenc.o dv.o dxa.o 8bps.o ffv1.o huffyuv.o flac.o flacenc.o flashsv.o flashsvenc.o flicvideo.o 4xm.o fraps.o gifdec.o lzw.o gif.o h261dec.o h261.o h261enc.o h263dec.o h264.o h264idct.o cabac.o idcinvideo.o imc.o indeo2.o indeo3.o interplayvideo.o dpcm.o jpeglsdec.o jpegls.o mjpegdec.o mjpeg.o jpeglsenc.o kmvc.o ljpegenc.o mjpegenc.o loco.o mace.o mjpegbdec.o mmvideo.o mpegaudiodec.o mpegaudiodecheader.o mpegaudio.o mpegaudiodata.o mpegaudioenc.o mpc.o msmpeg4.o msmpeg4data.o msrle.o msvideo1.o lcl.o nuv.o rtjpeg.o pnmenc.o pnm.o png.o ptx.o qdm2.o qdrw.o qpeg.o qtrle.o qtrleenc.o ra144.o ra288.o roqvideodec.o roqvideo.o roqvideoenc.o elbg.o roqaudioenc.o rpza.o rv10.o sgidec.o sgienc.o rle.o shorten.o smacker.o smc.o snow.o sonic.o sp5xdec.o svq1.o targa.o targaenc.o vp3.o xiph.o vp3dsp.o tiertexseqv.o tiff.o tiffenc.o lzwenc.o truemotion1.o truemotion2.o truespeech.o tscc.o tta.o txd.o s3tc.o ulti.o vc1.o vc1data.o vc1dsp.o vcr1.o vmdav.o vmnc.o vorbis_dec.o vorbis.o vorbis_data.o vorbis_enc.o vp5.o vp56.o vp56data.o vp6.o vqavideo.o wavpack.o wmadec.o wma.o wmaenc.o wnv1.o ws-snd1.o xan.o xl.o zmbv.o zmbvenc.o pcm.o adpcm.o adx.o g726.o libx264.o aac_parser.o aac_ac3_parser.o ac3_parser.o cavs_parser.o dca_parser.o dvbsub_parser.o dvdsub_parser.o h261_parser.o h263_parser.o h264_parser.o mjpeg_parser.o mpeg4video_parser.o mpegaudio_parser.o mpegvideo_parser.o pnm_parser.o vc1_parser.o dump_extradata_bsf.o remove_extradata_bsf.o noise_bsf.o mp3_header_compress_bsf.o mp3_header_decompress_bsf.o mjpega_dump_header_bsf.o imx_dump_header_bsf.o pthread.o i386/idct_mmx.o i386/cavsdsp_mmx.o i386/snowdsp_mmx.o i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o tree.o string.o rational.o random.o mem.o md5.o mathematics.o lzo.o log.o lls.o intfloat_readwrite.o fifo.o crc.o base64.o aes.o adler32.o -L"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavutil -lavutil -lm -lz -lx264 -ldl

5问题

1)configure时提示“bad interpreter”

答:vi configure然后:set ff=unix

2) configure时提示“某文件权限问题”

答:chmod +x filename

初学者 你应当如何学习C 以及编程

初学者,你应当如何学习C 以及编程 软件小兵 ruanjianxiaobing@sohu 作者:未知文章来源:天极Yesky软件频道 Javascript是世界上最受误解的语言,其实C 何尝不是。坊间流传的错误的C 学习方法一抓就是一大把。我自己在学习C 的过程中也走了许多弯路,浪费了不少时间。 为什么会存在这么多错误认识?原因主要有三个,一是C 语言的细节太多。二是一些著名的C 书籍总在(不管有意还是无意)暗示语言细节的重要性和有趣。三是现代C 库的开发哲学必须用到一些犄角旮旯的语言细节(但注意,是库设计,不是日常编程)。这些共同塑造了C 社群的整体心态和哲学。 单是第一条还未必能够成气候,其它语言的细节也不少(尽管比起C 起来还是小巫见大巫),就拿Javascript来说,作用域规则,名字查找,closure, for/in,这些都是细节,而且其中还有违反直觉的。但许多动态语言的程序员的理念我猜大约是学到哪用到哪罢。但C 就不一样了,学C 之人有一种类似于被暗示的潜在心态,就是一定要先把语言核心基本上吃透了才能下手写出漂亮的程序。这首先就错了。这个意识形成的原因在第二点,C 书籍。市面上的C 书籍不计其数,但有一个共同的缺点,就是讲语言细节的书太多——《C gotchas》,《Effective C 》,《More Effective C 》,但无可厚非的是,C 是这样一门语言:要拿它满足现代编程理念的需求,尤其是C 库开发的需求,还必须得关注语言细节,乃至于在C 中利用语言细节已经成了一门学问。比如C 模板在设计之初根本没有想到模板元编程这回事,更没想到C 模板系统是图灵完备的,这也就导致了《Modern C Design》和《C Template Metaprogramming》的惊世骇俗。 这些技术的出现为什么惊世骇俗,打个比方,就好比是一块大家都认为已经熟悉无比,再无秘密可言的土地上,突然某天有人挖到原来地下还蕴藏着最丰富的石油。在这之前的C 虽然也有一些细节,但也还算容易掌握,那可是C 程序员们的happy old times,因为C 的一切都一览无余,everything is figured out。然而《Modern C Design》的出世告诉人们,“瞧,还有多少细节你们没有掌握啊。”于是C 程序员们久违的激情被重燃起来,奋不顾身的踏入细节的沼泽中。尤其是,模板编程将C 的细节进一步挖掘到了极致——我们干嘛关心涉及类对象的隐式转换的优先级高低?看看boost::is_base_of就可以知道有多诡异了。 但最大的问题还在于,对于这些细节的关注还真有它合适的理由:我们要开发现代模板库,要开发active library,就必须动用模板编程技术,要动用模板编程技术,就必须利用语言的犄角旮旯,enable_if,type_traits,甚至连早就古井

VS2010 C++下编译调试MongoDB源码

VS2010 C++下编译调试 MongoDB源码 考虑到m ongodb使用了boost库源码,参考m ongodb官方文档后,下载编译boost版本是1.42(时间为2010-2-2)或更新版本: boost版本1.42: https://www.sodocs.net/doc/f1724961.html,/projects/boost/files/boost/1.42.0/boost_1_42_0.zip/download 下载boost源码之后,我把boost解压在D盘。 1.在D:\boost_1_42_0\下找到该批处理文件bootstrap.bat,以vs2010命令行方式运行它,并最终生成bjam.exe可执行文件(详细结果及错误信息见生成的bjam.log日志)。 2.将生成的bjam.exe文件拷贝到“D:\boost_1_42_0”目录下,运行下面命令行: bjam stage variant=debug --stagedir="d:\boost_1_42_0" --with-files ystem --with-thread --with-date_time --with-program_options --layou t=versioned threading=multi toolset=msvc-10.0 如下 图:

注:i.如果要生成release链接库文件,需将上面的variant设置成release,形如:bjam stage variant=release ..... ii.如果要全部生成使用下面编译选项 bjam ...... --build-type=com plete 编译过程可能会用一些时间,最终会在"D:\boost_1_42_0" 生成一个lib目录,里面包括刚生成的库文件。 3.下载已用vs2010编译的SpiderMonkey库文件及源码包,并将其解压到D盘下,下载链接: https://https://www.sodocs.net/doc/f1724961.html,/dwight/vc2010_js 将该文件夹名称改为“js”(因为m ongodb项目会默认指定该路径寻找可用的lib及c源文件),

linux下编译C语言

GCC 支持了许多不同的语言,包括C、C++、Ada、Fortran、Objective C,Perl、Python 和Ruby,甚至还有Java。 Linux 内核和许多其他自由软件以及开放源码应用程序都是用 C 语言编写并使用GCC 编译的。 编译C++程序: -c 只编译不连接 g++ file1 -c -o file1.o g++ file2 -c -o file2.o g++ file1.o file.o -o exec g++ -c a.cpp 编译 g++ -o a a.o 生成可执行文件 也可以g++ -o a a.cpp直接生成可执行文件。 1. 编译单个源文件 为了进行测试,你可以创建“Hello World”程序: #include #include int main(int argc, char **argv) { printf(“Hello world!n”); exit(0); } 使用如下命令编译并测试这个代码: # gcc -o hello hello.c

# ./hello Hello wordl! 在默认情况下产生的可执行程序名为a.out,但你通常可以通过gcc 的“-o”选项来指定自己的可执行程序名称。 2. 编译多个源文件 源文件message.c包含一个简单的消息打印函数: #include void goodbye_world(void) { printf(“Goodbye, world!n”); } 使用gcc的“-c”标记来编译支持库代码: # gcc -c message.c 这一过程的输出结果是一个名为message.o的文件,它包含适合连接到一个较大程序的已编译目标代码。 创建一个简单的示例程序,它包含一个调用goodbye_world的main函数 #include void goodbye_world(void): int main(int argc, char **argv) { goodbye_world(); exit(0); }

Linux 下编译C程序

Linux 下编译C程序 admin , 2010/03/05 12:55 , linux , 评论(0) , 阅读(76020) , Via 本站原创 GCC 支持了许多不同的语言,包括 C、C++、Ada、Fortran、Objective C,Perl、Python 和 Ruby,甚至还有Java。 Linux 内核和许多其他自由软件以及开放源码应用程序都是用 C 语言编写并使用 GCC 编译的。 编译C++程序: -c 只编译不连接 g++ file1 -c -o file1.o g++ file2 -c -o file2.o g++ file1.o file.o -o exec g++ -c a.cpp 编译 g++ -o a a.o 生成可执行文件 也可以 g++ -o a a.cpp直接生成可执行文件。 1. 编译单个源文件 为了进行测试,你可以创建“Hello World”程序: #include #include int main(int argc, char **argv) { printf(“Hello world! ”); exit(0); } 使用如下命令编译并测试这个代码: # gcc -o hello hello.c # ./hello Hello wordl! 在默认情况下产生的可执行程序名为a.out,但你通常可以通过 gcc 的“-o”

选项来指定自己的可执行程序名称。 2. 编译多个源文件 源文件message.c包含一个简单的消息打印函数: #include void goodbye_world(void) { printf(“Goodbye, world! ”); } 使用gcc的“-c”标记来编译支持库代码: # gcc -c message.c 这一过程的输出结果是一个名为message.o的文件,它包含适合连接到一个较大程序的已编译目标代码。 创建一个简单的示例程序,它包含一个调用goodbye_world的main函数 #include void goodbye_world(void): int main(int argc, char **argv) { goodbye_world(); exit(0); } 使用GCC编译这个程序: # gcc -c main.c 现在有了两个目标文件: message.o 和 main.o 。它们包含能够被 Linux 执行的目标代码。要从这个目标代码创建Linux可执行程序,需要再一次调用 GCC 来执行连接阶段的工作: # gcc -o goodbye message.o main.o 运行编译结果: # ./goodbye Goodbye, world! 前面这些单独的步骤也可以简化为一个命令,这是因为 GCC 对如何将多个源文件编译为一个可执行程序有内置的规则。 # gcc -o goodbye message.c main.c

Windows版bjam的安装和配置

1、下载boost(或bjam)的源码,在命令行下执行如下命令: cd \tools\jam\src .\build.bat 其中指的是boost源码的根目录。这两条命令执行完毕,会产生一个bin.ntx86文件夹,里面含有一个编译生成的bjam.exe。将bjam.exe复制到C:\WINDOWS目录(或者PATH环境变量的其它取值)下。 2、在C:\Documents and Settings\All Users目录(或其它任意目录亦可)新建一个名为boost 的目录(取bjam或其它名字亦可,后面环境变量的值与此一致即可),将 \tools\build\v2目录及其前两级父目录复制到该boost目录里,则此时在C:\Documents and Settings\All Users\boost\tools\build\v2目录里可找到一个boost-build.jam文件,打开该文件并将boost-build的值改为: boost-build “C:/Documents and Settings/All Users/boost/tools/build/v2” ; 要注意此处的路径要用斜杠来隔开,但前面执行的命令涉及到的路径则用反斜杠隔开。另外,分号与前面的文字要有空格。 3、仍然在v2文件夹下,打开user-config.jam文件,找到以下一行: # using msvc ; 将“#”去掉。 4、添加BOOST_ROOT环境变量。具体操作为:右击“我的电脑”,选择“属性”->“高级”->“环境变量”,在“系统变量”方框下方点击“新建”,出现新建系统变量对话框。变量名填上BOOST_ROOT,变量值填上“C:\Documents and Settings\All Users\boost\tools\build\v2”(此路径即boost-build.jam所在的目录,注意要用英文环境下的双引号括起来)。至此,bjam 编译环境配置完成。 5、如果步骤4的环境变量不起作用,则用户的每个工程源码根目录必须存在一个步骤2修改好的boost-build.jam,bjam程序方可正常工作。但由于bjam会从工程根目录逐级搜索至工程所在磁盘分区根目录,若在每个磁盘分区根目录都复制一份boost-build.jam,则不管用户将工程源码放在什么地方,bjam程序都能正常读取boost-build.jam,然后编译工程了。 注意:在装bjam之前,必须保证系统中已安装了Visual Studio,否则无法编译出bjam.exe。如果想删除bjam,只需手动将C:\WINDOWS\bjam.exe、boost目录(用户创建的)和相关环境变量删除即可。 已发现及解决问题: 1、Visual Studio 2010的设置问题 如果系统安装的是Visual Studio 2010,则还需要向系统环境变量添加以下路径(假设VS安装在D盘): D:\Program Files\Microsoft Visual Studio 10.0\VC\bin 否则在编译bjam或者利用bjam编译用户工程时会报错,前者会提示找不到cl等命令,后者则会提示多个jam文件运行出错。

Boost编译和安装说明

Boost编译和安装说明 一、下载和安装 从官方主页https://www.sodocs.net/doc/f1724961.html,下载最新版,因为boost一部分类是需要编译成库才能使用的,所以需要准备好boost专用的编译辅助工具bjam。可直接使用boost安装包中附带的bjam源码来编译出bjam。 将boost安装包解压到E:\boost_1_53_0,运行E:\boost_1_53_0\bootstrap.bat批处理,会复制E:\boost_1_53_0\tools\build\v2\engine\ bin.ntx86\bjam.exe到目录E:\boost_1_53_0\下,注意最后bjam.exe必须与boost-build.jam在同级目录。 二、编译 打开命令提示符(cmd.exe)窗口并执行bjam,使用--help查看命令帮助。bjam的命令行参数涉及具体库的选择,会影响编译后的硬盘空间。 使用bjam命令如:bjam stage --toolset=msvc-10.0 --without-python --without-wave --without-test --stagedir="E:\boost_1_53_0_vc10" link=shared runtime-link=shared threading=multi debug release 下面详细解释一下每个参数的含义: 1)stage/install:stage表示只生成库(dll和lib),install还会生成包含头文件的 include目录。推荐使用stage,因为install生成的这个include目录实际就是boost 安装包解压缩后的boost目录(E:\boost_1_53_0\boost,只比include目录多几个非hpp的小文件),可以直接使用,而且不同的IDE都可以使用同一套头文件。 2)toolset:指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)、 msvc-10.0(VS2010)等。 3)without/with:选择不编译/编译哪些库,默认是全部编译。例如,without-python意 思是不需要编译python库。如果选择编译python的话,应该到python官方主页 https://www.sodocs.net/doc/f1724961.html,下载安装。 4)stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文 件的路径。如果使用了install参数,那么还将生成头文件目录。推荐给不同的IDE 指定不同目录 5)build-dir:编译生成的中间文件的路径。默认就在根目录(E:\boost_1_53_0)下,目 录名为bin.v2,等编译完成后可具体查看一下是否生成了lib、dll文件。如果不需要可直接删除bin.v2目录 6)link:生成动态链接库/静态链接库。动态链接库使用shared方式,静态链接库使用 static方式。注意,static方式下生成的很多静态链接库大小都在几兆、几十兆。不推荐以static方式编译(without掉),巨型库黑名单:wave、graph、math、regex、test、program_options、serialization、signals。 7)runtime-link:动态/静态链接C/C++运行时库,有shared和static两种方式,与link 参数组合有4种方式。但通常一个工程用动态链接那么所有库都用动态链接,如果用静态链接那么所有库都用静态链接。所以只需要编译2种组合即可,即link=shared runtime-link=shared和link=static runtime-link=static。 8)threading:单/多线程编译。一般使用多线程程序,要指定multi方式;如果需要单线 程环境,使用single方式。

linux下编写c源程序并编译运行

实验二Linux基本操作 编写c源程序并用编译运行 【需求】 在当前目录下创建新文件,用vi编辑器一段简单代码,代码要求在屏幕上输出文字“Hello Linux!”; 用gcc编译文件,并运行,查看输出结果,若结果错误,请根据提示修改; 【系统及软件环境】 操作系统:Virtualbox,Fedora 13 【实验配置文件及命令】 1.配置文件: 2

在“系统-分配光驱”里选择“” 查看安装源挂载位置 df命令,可查看到虚拟光驱挂载点 返回结果为:/media/Fedora 13 i386 DVD 使用安装源 安装的文件为RPM安装包,所在位置为安装光盘中的“Packages”目录下,可用“cd” 命令进入此目录 cd /media/ Fedora 13 i386 DVD/Packages 由于“Fedora 13 i386 DVD”名字中有空格,若直接输入,则会提示找不到此目录,可用“tab”键自动补全 【方法】cd /media/F)/P() 则可返回如下结果: cd /media/Fedora\ 13\ i386 \DVD\ /Packages 查看当前目录下是否有gcc安装包 ls |grep gcc 可返回四个结果: 4.4.4 g cc-c++4.4.4 4.4.4 4.4.4其中“4.4.4就是我们所需要的安装包 安装RPM包 【语法】rpm –ivh RPM包文件名称 即:rpm –ivh 4.4.4(此处可用tab键自动补全,即rpm –ivh gcc-4) 此时提示错误 cloog-ppl >= is needed by 4.4.4 c pp = 4.4.4 is needed by glibc-devel >= is needed by 4.4.4【原因】RPM安装包相互之间有依赖关系,需要安装依赖软件包,一共需要6个安装包,分别是kernel-headers、glibc-headers、glibc-devel、cpp、cloog-ppl和gcc 则实际安装顺序为: rpm –ivh 2.6.33 –ivh –ivh –ivh 4.4.4 –ivh --nodeps 0.15.7 –ivh 4.4.4【注意】 ①安装过程中“RPM包文件名称”注意用“tab”键减少输入 ②第“v”步安装cloog-ppl时,需带上参数“--nodeps”,因为安装此文件时所需要 的关联文件不必安装,所以用参数“--nodeps”可跳过关联检测,强制安装。 6 安装完成后,返回创建文件的test目录。使用gcc 命令来对文件进行编译。 编译完成后利用ls -l 命令查看生成的文件或者通过参数“gcc -o a”指定编译后的文件名称为a 7执行程序:./ 即可看到程序执行结果。 8 此时屏幕上会显示:Hello Linux!的字样。至此,软件的安装,程序的编写,执行 已经结束。 【实验故障与分析】

boost库编译

①打开你是boost_1_37_0文件夹 ②打开tools/jam/src ③点击build.bat 稍等一下会生成一个新的文件夹,打开里面有一个bjam.exe,复制它然后将它粘 贴到boost_1_37_0文件夹里面 然后打开vc2005的命令行:开始->所有程序->visualstudio 2005->visual sudio tools->命令提示(也就是那个黑色doc的标志) (许多人用cmd 那个doc命令,许多情况下是不行的,我就试过) 假如你的boost文件夹在E:/boost_1_37_0; 那么可以这样打命令: 1 E:然后回车 2 cd boost_1_37_0 然后回车 3 bjam.exe 然后回车 你的boost库就开始编译了,时间很长~ 剩下的别人也说得较为清楚,呵呵,;-), 我玩boost很久了,从1.34开始就一直玩,很不错 4 回答者:a_xr13800 - 二级 2009-1-7 22:01 我来评论>>提问者对于答案的评价: 谢谢哦 相关内容 ? boost 1_33_1 在VC6.0上的安装出现问题 2006-12-17 ? 1.0 bar boost是什么意思 2009-2-7 ? 笔记本《上、下、左、右,》键不起作用调不成boost引导顺序,怎样装系 统啊 2010-5-12 ? 联想Y460 I3 intel turbo boost technology device驱动装不了,是什么原 因 3 2010-8-1 ? 我的主板是技嘉770t-us3 装了easy tune 6 可是找不到easy boost 2010-4-28 等待您来回答更多 ?2回答为什么不用卫星来测控嫦娥二号? ?2回答xyhhdh商业理财 ?0回答最近刚买的房子,走的是商业贷款,现交完订金,马上就去交首付款,我... ?0回答用VS2008 新建一个MFC单文档工程,菜单里的改变应用程序外观是怎么实现... ?1回答visual studio 2008 SP1里有STL吗?? ?2回答各位编程爱好者,请帮我看看这道C语言题,将中缀表达式转化为后缀表达... ?2回答请问高手,汉武大帝第七集里贵妃们玩的什么游戏???

linux下编写c源程序并编译运行

姓名:雨田河南大学rjxy 班级:XXXX 实验二Linux基本操作 实验二Linux基本操作 编写c源程序并用编译运行 【需求】 ◆在当前目录下创建新文件t.c,用vi编辑器一段简单代码,代码要求在屏幕上输出 文字“Hello Linux!”; ◆用gcc编译t.c文件,并运行,查看输出结果,若结果错误,请根据提示修改;【系统及软件环境】 操作系统:Virtualbox,Fedora 13 【实验配置文件及命令】 1.配置文件: 2.命令:touch、rpm、gcc、./等

进入Linux操作系统,应用程序-> 系统工具-> 终端,输入命令:su 输入密码切换到root超级用户。 1.在当前目录建立一个新的目录test:$ mkdir test 在test目录下建立文件t.c :$touch t.c 3编辑程序源代码:vi t.c 首先按下键盘的“i”键,字符界面下方出现“insert”提示字符,此时输入以下代码: #include "stdio.h" int main() { printf("Hello Linux!\n"); return 0; } 4 保存退出:先按下“Esc”键,然后按下“shift”和“:”键,界面上出现冒号,然后输入“xq!”或者“x”对代码保存退出。 5 由于系统默认没有安装C语言编译程序,下面进行安装gcc 程序; 此处不再赘述,以下引用实验指导书: 1.gcc的安装 (1)查看gcc是否安装 rpm –q gcc (2)指定安装源 在“系统-分配光驱”里选择“Fedora-13-i386-DVD.iso” (3)查看安装源挂载位置 df命令,可查看到虚拟光驱挂载点 返回结果为:/media/Fedora 13 i386 DVD (4)使用安装源 安装的文件为RPM安装包,所在位置为安装光盘中的“Packages”目录下,可用“cd”命令进入此目录 cd /media/ Fedora 13 i386 DVD/Packages ★由于“Fedora 13 i386 DVD”名字中有空格,若直接输入,则会提示找不到此目录,可用“tab”键自动补全 【方法】cd /media/F)/P() 则可返回如下结果: cd /media/Fedora\ 13\ i386 \DVD\ /Packages (5)查看当前目录下是否有gcc安装包

Boost库的安装与使用

Boost库在Windows及Linux上的安装及使用 Windows with VS2010 1.安装VS2010 2.下载安装Python (编译Boost库时需要) https://https://www.sodocs.net/doc/f1724961.html,/ 3.下载 最新boost库 https://www.sodocs.net/doc/f1724961.html,/projects/boost/files/latest/download 4.解压到指定目录。 例如:D:\boost_1_57_0 这时,大部分库可以用了,但是与操作系统相关的部分还需要Build.比如thread库。 5.编译boost库 运行command window. 开始菜单/运行/cmd 输入Dos命令:d: 输入Dos命令:cd d:\boost_1_57_0 运行批处理:bootstrap.bat 运行完后输入命令:./b2 编译结束后就可以使用了 6. 设置VS2010 添加include 路径:d:\boost_1_57_0 添加library路径: d:\stage\lib (编译好后产生的) Linux with GCC 1.下载安装Python (编译Boost库时需要) https://https://www.sodocs.net/doc/f1724961.html,/ 2.下载 最新boost库 https://www.sodocs.net/doc/f1724961.html,/projects/boost/files/latest/download 3.解压到指定目录 例如:/usr/boost_1_57_0 这时,大部分库可以用了,但是与操作系统相关的部分还需要Build.比如thread库。 4.Build boost库 运行命令窗口,将当前路径切到/usr/boost_1_57_0

编译libtorrent.lib篇

BT的编译测试全过程 为了进行libtorrent.lib的编译,首先我们需要搭建起基本的编译环境,由于libtorrent.lib 在编译时需要调用openssl里面的某些内容,所以第一步需要将openssl编译出来。其次,我们编译libtorrent.lib的目的是为了调用它,利用其源码中的client_test.cpp的例子,来进行bt下载,而client_test.cpp在编译后链接的过程中需要调用到boost中的某些lib文件,所以在之后必须对boost编译。 注:本项目中,我们在vs2008的环境下进行编译,选用的各源程序版本如下: (1)请参考openssl编译部分,完成openssl的编译。 (2)请参考boost编译部分,完成boost的编译。 (3)进行libtorrent.lib的编译 i.首先在VS2008的环境下新建一个空的lib项目(不包含预编译项),将如下目录中的相关源文件导入(方法:解决方案—源文件—右键添加现有项)。 $(SolutionDir)\libtorrent-rasterbar-0.14.4\src (导入该目录下所有的.cpp文件,不包括Makefile.in,Makefile.am文件) $(SolutionDir)\libtorrent-rasterbar-0.14.4\zlib (导入该目录下所有的.c文件)$(SolutionDir)\libtorrent-rasterbar-0.14.4\src\kademlia (导入该目录下所有的.cpp文件不包括Makefile.in,Makefile.am文件) ii.将项目中所有#include的头文件目录包含到工程中(方法:项目—属性—C\C++--常规—附加包含路径),具体有如下四个目录: $(SolutionDir)\ openssl-0.9.8a\include $(SolutionDir)\libtorrent-rasterbar-0.14.4\zlib $(SolutionDir)\libtorrent-rasterbar-0.14.4\include $(SolutionDir)\boost_1_39_0 iii.为该项目添加预处理器项(项目中原本有的预处理器项WIN32、_DEBUG、_LIB不变)WIN32_LEAN_AND_MEAN _WIN32_WINNT=0x0501 __USE_W32_SOCKETS TORRENT_LOGGING TORRENT_VERBOSE_LOGGING TORRENT_STORAGE_DEBUG TORRENT_UPNP_LOGGING TORRENT_DISK_STATS TORRENT_STA TS TORRENT_DHT_VERBOSE_LOGGING TORRENT_VERBOSE_BANDWIDTH_LIMIT TORRENT_USE_OPENSSL UNICODE _UNICODE CMAKE_INTDIR=\"Debug\" iv.编译--生成解决方案,生成成功。生成的是debug版本的libtorrent.lib,位于(OutDir)\

C++的boost库的编译安装

ICU编译(VS2010): ICU提供了unicode和国际化支持,目前的版本是 4.8.1。ICU的主页是https://www.sodocs.net/doc/f1724961.html,/。 (1). 下载 可以从https://www.sodocs.net/doc/f1724961.html,/projects/icu/files/下载源代码版本。4.8.1是VS2010的,4.4.2才是VS2008的,如果是2010要做转换。 (2). 编译 ICU的编译比较简单,打开ICU源代码目录下的source\allinone\allinone.sln,需要转换到VS2008格式,直接转换即可。然后,选择release,Rebuild Solution即可。 (3). 测试 将编译出来的bin目录加入到系统的PATH目录中去。然后,重新打开allinone.sln工程。需要通过测试的项目 1. cintltst项目 2. intltest项目 3. iotest 分别设置成启动项目,运行即可。 2. bzip bzip的主页是https://www.sodocs.net/doc/f1724961.html,/,从https://www.sodocs.net/doc/f1724961.html,/downloads.html下面下载源代码包即可,boost直接使用源代码来进行编译。 3. zlib zlib的主页是https://www.sodocs.net/doc/f1724961.html,/,https://www.sodocs.net/doc/f1724961.html,/projects/gnuwin32/files/zlib/从该网页下面下载源代码包即可,boost直接使用源代码来进行编译。 4. python python的主页是https://www.sodocs.net/doc/f1724961.html,/,下载python的2.5.2版本,安装即可。boost默认是会编译python,并且会自动寻找python的安装目录。 ICU编译(MinGW): 还未成功编译

linux下使用gcc命令编译代码

linux下使用gcc命令编译代码 初学时最好从命令行入手,这样可以熟悉从编写程序、编译、调试和执行的整个过程。编写程序可以用vi/vim(个人觉得vim比vi好用)或其它编辑器编写。编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。 gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。 一. 常用编译命令选项 假设源程序文件名为test.c 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。编译成功后可以看到生成了一个a.out的文件。在命令行输入./a.out 执行程序。./表示在当前目录,a.out为可执行程序文件名。 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。输入./test执行程序。 3. 选项 -E 用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test.i文件。 4. 选项 -S 用法:#gcc -S test.i 作用:将预处理输出文件test.i汇编成test.s文件。 5. 选项 -c 用法:#gcc -c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 6. 无选项链接 用法:#gcc test.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。输入./test执行程序。 7. 选项-O 用法:#gcc -O1 test.c -o test 作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。输入./test执行程序。 8.编译使用C++ std库的程序 用法:#gcc test.cpp -o test -lstdc++ 作用:将test.cpp编译链接成test可执行文件。-lstdc++指定链接std c++库。

IT工作岗位汇总及岗位要求内容

一、软件研发工程师 工作职责: -负责核心产品功能和架构开发 -负责核心技术算法的研究、实现和优化 -负责前瞻技术的跟踪调研和产品创新 需要的技能: -深刻理解计算机数据结构和算法设计,精通C/C++、Java、PHP中至少一门编程语言 -了解windows、unix、linux等主流操作系统原理,熟练运用系统层支持应用开发 二、移动软件研发工程师 工作职责: -开发移动互联网应用产品或框架 -移动应用核心技术研发 -学习和研究移动客户端新技术 -根据开发过程中的体验对产品提出改进建议 -配合市场等其他部门,提供产品相关技术支持 需要的技能: -精通一门常用编程语言(C/C++/Java/Objective C) -对数据结构和算法设计有较为深刻的理解 -熟悉手机研发平台(Android/iPhone/windows phone 7等)者优先 -熟悉HTML/WML/CSS等相关规 -熟悉Javascript与DOM规 -熟悉webkit或其他任意一种浏览器核 -熟悉HTML5编程技术 -熟悉Linux操作系统 -熟悉数据库原理和技术,熟练使用SQL -熟悉TCP/IP,HTTP,HTTPS等网络协议优先

三、Web前端研发工程师 工作职责: -各产品Web前端研发 -各产品易用性改进和界面技术优化 -Web前沿技术研究和新技术调研 需要的技能: -精通JavaScript、Ajax等Web开发技术 -精通HTML/XHTML、CSS等网页制作技术,熟悉页面架构和布局 -熟悉W3C标准,对表现与数据分离、Web语义化等有深刻理解 -具有Mobile WEB/WAP、HTML5/CSS3、nodejs、Flash开发经验 -精通一种模板语言(Smarty、Velocity、Django等) -熟悉Linux平台,掌握一种后端开发语言(PHP/Java/C/C++/python等) -有前端性能优化经验 -具有一定的软件工程意识,对数据结构和算法设计有充分理解 四、机器学习/数据挖掘工程师 工作职责: -研究数据挖掘或统计学习领域的前沿技术,并用于实际问题的解决和优化 -大规模机器学习算法研究及并行化实现,为各种大规模机器学习应用研发核心技术 -通过对数据的敏锐洞察,深入挖掘产品潜在价值和需求,进而提供更有价值的产品和服务,通过技术创新推动产品成长 需要的技能: -具有以下一个或多个领域的理论背景和实践经验:机器学习/数据挖掘/深度学习/信息检索/自然语言处理/机制设计/博弈论 -至少精通一门编程语言,熟悉网络编程、多线程、分布式编程技术,对数据结构和算法设计有较为深刻的理解 -良好的逻辑思维能力,对数据敏感,能够发现关键数据、抓住核心问题 -熟悉文本分类、聚类、机器翻译,有相关项目经验 -熟悉海量数据处理、最优化算法、分布式计算或高性能并行计算,有相关项目经验

C++题目(含答案)

1. char *p; char *q[20]; char *m[20][20]; int (*n)[10]; struct MyStruct { char dda; double dda1; int type ; }; MyStruct k; printf("%d %d %d %d %d",sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k)); 答案:4 80 1600 4 24 2. Which is the correct output for the following code double dArray[2] = {4, 8}, *p, *q; p = &dArray[0]; q = p + 1; cout << q – p << endl; cout << (int)q - (int)p << endl; a) 1 and 8 b) 8 and 4 c) 4 and 8 d) 8 and 1 答案:选A; 第一个是指针加减,按照的是指向地址类型的加减,只跟类型位置有关,q和p指向的数据类型以实际数据类型来算差一个位置,因此是1。而第二个加减是实际指针值得加减,在内存中一个double类型占据8个字节,因此是8 3. 请用C++写一个小程序,先请用户输入三个字符串,然后把第一个字符串中出现的所有的第二个字符串替换成第三个字符串,最后输出新的字符串。 呃,可以用boost::regex吗?几乎没代码

cin >> s1 >> s2 >> s3; cout << regex_replace(s1, s2, s3); 4. 1.编写一个四舍五入的函数,要求可以保留到小数后面的任意一位(如3.1415927保留到小数点后第3位后得到3.142) 2.编写一个函数(不需要写出完整的类定义),计算两个日期(java.util.date)对象间相隔的天数,代码量不的超过10行。 答案: 1. public String numberDeal(double num,int n){ NumberFormat nf=NumberFormat.getInstance(); nf.setMaximumFractionDigits(n); nf.setMinimumFractionDigits(n); return nf.format(num); } 2. public long dateDivide(Date begin,Date end){ long begintime=begin.getTime(); long endtime=end.getTime(); long value=endtime-begintime; if(value%(1000*60*60*24)==0) return value/(1000*60*60*24); else return (value/(1000*60*60*24))+1; 5.题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。 解说: 1.strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) {

核心板linux内核及驱动模块编译步骤

核心板linux内核编译及驱动模块编译步骤 一、内核编译: 1,拷贝开发板linux系统源代码(linux-2.6.30)到ubuntu的任意位置,打开终端,进入linux-2.6.30目录,输入命令:cp arch/arm/configs/sbc6045_defconfig .config 回车 2,输入命令:make menuconfig 回车,若提示以下界面 *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** *** Install ncurses (ncurses-devel) and try again. *** 输入命令:sudo apt-get install libncurses5-dev 回车,安装ncurses 3,安装完成后,输入命令:make menuconfig 回车,进入配置选项界面,按需修改,目前未修改。 4,输入命令:make uImage 回车,若提示Can't use 'defined(@array)',修改kernel/timeconst.pl 文件中 373行,if (!defined(@val))改为if (!@val) ,重新执行make uImage命令。 二、驱动模块编译(若从未编译过内核,需要先编译内核): 1,将编写好到源文件(如:cgc-pio.c)拷贝到linux-2.6.30/drivers/char/目录 2,修改linux-2.6.30/drivers/char/目录下到Makefile文件,增加一行,内容为:obj-m += xxx.o,如:obj-m += cgc-pio.o 3,打开linux终端,进入linux-2.6.30目录,输入命令:make modules 回车,完成后在linux-2.6.30/drivers/char/目录下会产生对应到.ko文件(如:cgc-pio.ko)。

第1条 在高警告级别干净利落地进行编译

摘要 高度重视警告:使用编译器的最高警告级别。应该要求构建是干净利落的(没有警告)。理解所有的警告。通过修改代码而不是降低警告级别来排除警告。 讨论 编译器是你的朋友。如果它对某个构造发出警告,这经常是说明你的代码中存有潜在的问题。 成功的构建应该是无声无息的(没有警告的)。如果不是这样,你很快就会养成不仔细查看输出的习惯,从而漏过真正的问题(见第2条)。 排除警告的正确做法是:(1)把它弄清楚;然后,(2)改写代码以排除警告,并使代码阅读者和编译器都能更加清楚,代码是按编写者的意图执行的。 即使程序一开始似乎能够正确运行,也还是要这样做。即使你能够肯定警告是良性的,仍然要这样做。因为良性警告的后面可能隐藏着未来指向真正危险的警告。 示例 例1 第三方头文件。无法修改的库头文件可能包含引起警告(可能是良性的)的构造。如果这样,可以用自己的包含原头文件的版本将此文件包装起来,并有选择地为该作用域关闭烦人的警告,然后在整个项目的其他地方包含此包装文件。例如(请注意,各种编译器的警告控制语法并不一样): // 文件:myproj/my_lambda.h ——包装了 Boost 的 lambda.hpp // 应该总是包含此文件,不要直接使用 lambda.hpp。 // 注意:我们的构建现在会自动检查“grep lambda.hpp ”。 // https://www.sodocs.net/doc/f1724961.html,mbda 会产生一些已知无害的编译器警告。 // 在改正以后,我们将删除以下的编译指示,但此头文件仍然存在。 // #pragma warning(push) // 仅禁用此头文件 #pragma warning(disable:4512) #pragma warning(disable:4180) #include

相关主题