解决XBMC运行时提示 undefined symbol

  • Post author:
  • Post category:Ubuntu
  • Post comments:0评论

安装了最新的XBMC后,发现无法播放任何视频文件。表现为点击视频文件后没有反应,或者提示无法播放视频。查看在~/.xbmc目录下的log文件发现问题出在这一部分:

Unable to load /usr/lib/xbmc/system/players/dvdplayer/avformat-52-i486-linux.so, reason: /usr/lib/xbmc/system/players/dvdplayer/avformat-52-i486-linux.so: undefined symbol: BZ2_bzDecompressInit

即avformat-52-i486-linux.so动态链接库无法找到符号BZ2_bzDecompressInit,而BZ2_bzDecompressInit是另外一个动态链接库libbz2.so中的一个函数。熟悉gcc的人可能就明白了,这是由于xbmc无法加载到libbz2.so库引起的,所以我们需要手动指定xbmc加载这个动态库。 首先找到本机中libbz2.so的位置(可能需要安装相应的软件包:libbz2)。在我的Ubuntu11.10中,libbz2.so位于/lib目录下面,其文件名为libbz2.so.1.0.4,因而在xbmc运行前使用export LD_PRELOAD=”/lib/libbz2.so.1.0.4″指定该库的位置即可。可以编辑/usr/bin/xbmc文件,将export LD_PRELOAD=”/lib/libbz2.so.1.0.4″加入该文件头部。

#  File:/usr/bin/xbmc
#  This Program is distributed in the hope that it will be useful,
......

SAVED_ARGS="$@"
prefix="/usr"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"
LIBDIR="${exec_prefix}/lib"

#add libbz2 here
export LD_PRELOAD="/lib/libbz2.so.1.0.4"
# Check for some options used by this script
.......

继续阅读解决XBMC运行时提示 undefined symbol

SQLite指南-Ubuntu篇

SQLite是一个轻量级数据库系统,SQLite基于纯C实现,具有良好的跨平台特性。SQLite使用简单,能够应付小型的软件开发应用。在开发中使用SQLite,你需要从SQLite官方网站下载源码和库文件,当然,也可以自己编译库文件。

一、下载SQLite源码

这里获得SQLite源码,解压到任意目录。

二、编译静态库文件

首先生成目标文件

gcc -c sqlite3.cc -o sqlite3.o 

从目标文件生成静态库

ar cvr libsqlite3.a sqlite3.o 

使用静态库文件生成目标 假设在SQLiteDBTest.cpp文件中使用了sqlite的相应接口,静态编译的方法如下:

gcc SQLiteDBTest.cpp libsqlite3.a -lpthread -ldl -lstdc++ -o SQLiteDBTest

其中,-lpthread -ldl参数指定了sqlite使用的线程库和dl库(参见http://www.sqlite.org/howto compile.html),lstdc++指定使用标准C++库。

三、编译动态库文件

生成动态库文件

gcc -shared -fPCI -o libsqlite3.so sqlite3.o -ldl -lpthread 

注意链接参数-ldl和-lpthread 使用动态库文件生成目标

gcc SQLiteDBTest.cpp -lsqlite3 -L. -lstdc++ -o SQLiteDBTest 

其中-L.参数指定gcc优先从当前目录搜索库文件,如果不加该行,则优先从系统目录搜索库文件。 一般开发过程中,如系统中自带sqlite库,一般不需要自行编译相应库文件。如若要使用自行编译的库文件,最好安装时将其拷贝到系统库目录中。不然的话,对于自行编译的动态库,需要指出其位置,程序才能正常运行,使用如下命令添加查找库文件位置。

export LD_LIBRARY_PATH=$(pwd)

REF:

1.How To Compile SQLite

2.gcc详解以及静态,动态库的生成 1

3.gcc详解以及静态,动态库的生成 2

继续阅读SQLite指南-Ubuntu篇

写在Ubuntu Oneiric Ocelot之后

  • Post author:
  • Post category:Ubuntu
  • Post comments:1评论

昨天纠结的升级了Ubuntu Oneiric Ocelot,其中过程又是一次坑爹之旅,我现在只好建议玩Ubuntu的同学一定要做好使用光盘镜像升级的万全的准备啦。像我的Ubuntu在升级后就无法进入控制台了,一直卡在配置网络的命令行上,我在想是哪个脑残设计的启动服务顺序,敢情网络不配置好就不让用操作系统的不是,你起码让我进入tty1修改设置啊……使用update-manger -d 升级失败后还好有留着一个启动U盘,果断从镜像启动全新安装了。

Ubuntu Oneiric Ocelot的正式版已经比测试版本好多了,基本上以前存在的一些小问题都解决了,Unity的易用性又得到了一次提升,各种系统整合也好多了,相比WIn8哪个坑爹的想在
PC上运行平板界面的货好多了。

从8.10开始玩Ubuntu,那时候Ubuntu基本处于无法使用的状态,基本多少任何杀手级应用,没有多少硬件厂商支持(哈哈,没有A卡和N卡的厂商驱动,真是悲催……),那时候的FF卡的我都不想打开,Ooo也很残废(现在它快终于彻底费了,其实我听高兴的,毕竟libre系的前景要比它好多了),各种上网不能……

现在,Ubuntu Oneiric Ocelot尽管还不够用,但是,无论是底层还是应用上,都有了很大的改进,Gnome3和Unity的变革,总算说明那群Greek们懂得了“系统是给人用的”这个简单的道理了,新版的SoftCenter也算开始了Linux 最开始想做到的软件管理方式了。其实相什么Win App Store,App Store说创新之类一对Linux发行商都可以在后面笑了,Linux系很早就开始了集中式的软件包分发体系,只不过没有像Apple那样会做销售,也没有什么利润分成之类(Linux天生如此),没引起人们的关注。对于Ubuntu,官方源+PPA+googlecode/github基本构成了从正式到非正式的软件包分发体系,基本上避免了人们去一些下载网站下载软件的习惯。当然,国内某些XXXX学的很像,对用户来说是件好事。

对于Ubuntu的前景来说,我知道它会越来越好,但怕它的差距会越来越大。这些差距纯粹应用方面的,一个成功的系统,应该是对开发商友好的,甚至它某些时候需要去讨好开发商,显然Liunx没这个习惯,Linux内核还好些,开发的慢,比较稳定,那些做桌面环境简直就是大爷……想要一个程序在几十个不太开发理念的桌面环境中生存的确太痛苦了。而在中国,盗版windows对所有操作系统厂商来说都是毒瘤一般的存在,在加上QQ,Thunder,网银(你妹的IE Only)这些Windows Only的应用影响,由Windows向Ubuntu的迁移难度太大了。Thunder是典型的业界毒瘤,建议所有BT软件在代码级别把它Ban掉,反正每回开BT,只看到Xunlei下载的,没看到Thunder上传的。另外一个杀手级的应用是游戏了,这个就不多说了,推荐一下S2game的HoN,喜欢Dota的可以试试,其实游戏算是所有应用中最容易移植到Linux中的了,只要有相应的引擎,涉及到系统层面的问题游戏引擎应该可以处理掉大部分,可惜利润问题让这个想法难以实现。

好吧,就吐槽到这里了,愿Ubuntu越来越好~~~

继续阅读写在Ubuntu Oneiric Ocelot之后

永中字体中’

  • Post author:
  • Post category:Ubuntu
  • Post comments:0评论

WordPress的后台管理中标题的格式一般为“XXXXX < XXXXX”格式,但是在本人Ubuntu系统上一直无法正常显示,都是显示为“XXXXX Y XXXXX”中间的'<'字符被替换成为了'Y',这个问题十分诡异,而且一直也找不到问题所在。 为了弄清这个bug到底是什么问题引起的,我更换了浏览器,从FF到Chrome,结果还是显示不正常,于是切换到opera,这次终于发现一丝诡异的情况:在opera的标签中'<'显示是正常的,但是在Unity的全局菜单中,显示的字符确是'Y',仔细看了一下,在opera标签中的字体是黑体,而Unity菜单中的字体是永中仿宋,难道是字体的问题?于是修改了系统所有的相关字体为文泉微黑,果然显示正常了。 考虑引发这个问题,大概是永中字体中没有为浏览器解析的'<'字符提供映射,所以才会发生解析错误。以前就听说中文字体设计乱的一塌糊涂,搞得latex的中文支持一直很纠结,没想到今天还真遇到这么囧的问题了……

继续阅读永中字体中’

解决Nvidia-settings无法保存设置的问题

  • Post author:
  • Post category:Ubuntu
  • Post comments:1评论

基本上用Ubuntu后,游戏就戒了,但偶尔和同学Dota一下还是有必要的。安装nvidia的官方驱动后,使用nvidia-settings设置使用GPU等比例缩放,但是重启后这个设置就会还原,让人十分恼火。前几天终于搞清楚原因了。

在命令行下打开nvidia-settings,就会看到如下输出:

ERROR: Cannot open display 'iceyer-ubuntu:0.0'

ERROR: Unable to assign attribute CursorShadow specified on line 22 of
       configuration file '/home/iceyer/.nvidia-settings-rc' (no Display
       connection).

Google 一下,原来是nvidia-settings不支持使用iceyer-ubuntu:0.0这种格式来定位X输出,那么为什么配置文件中会写入这些了,原来是我没事把nvidia-settings configuration下面的”Include X Display Names in the Config File“选中引起的,删掉后,一切都很和谐,恩。

最后,使用-l参数把nvidia-settings加入启动项

nvidia-settings -l

参见
Bug 59316 – nvidia-settings uses wrong display name

继续阅读解决Nvidia-settings无法保存设置的问题

Ubuntu禁用触摸板Indicator

  • Post author:
  • Post category:Ubuntu
  • Post comments:0评论

鉴于广大硬件厂商和设备制造商的不合作与无所谓态度,Linux下的笔记本驱动一直是个麻烦问题。虽然我使用的Ubuntu发行版本在驱动集成上已经做的很好了,不过我的小Y上的键盘快捷键却不能完全识别,比如原来按Fn+F6禁用触摸板,现在不能用了,每回关闭触摸板都要去修改“系统设置”,实在时麻烦。现在你可以试试这个touchpad-indicator,虽然不能完成Fn+F6快捷键禁用触摸板,但总比改“系统设置”方便了。

不多说,放PPA

sudo apt-add-repository ppa:atareao/atareao
sudo update
sudo apt-get install touchpad-indicator

安装之后可以设置Ctrl+Alt+<自定义按键>的快捷键来开启和关闭触摸板。

继续阅读Ubuntu禁用触摸板Indicator

Ubuntu与Android系统的无线共享上网

网上关于使用Ubuntu共享无线的帖子很多,说法各不相同,我折腾了很久才让Defy能够使用上Ubuntu的无线。这里说说设置上的一些问题吧。

1.首先确保网卡支持无线共享
只有支持AP或者Master模式的网卡才能开启无线共享,如果你的网卡不支持,那就不必费功夫啦。使用iw查看无线网卡支持的模式。如下

iw list

在输出中找到“Supported interface modes:”这一行,如果下面列举的模式中含有AP或Master,那么你的网卡就能够支持无线共享。

        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * monitor
继续阅读Ubuntu与Android系统的无线共享上网

LiveLinux系列(1)–基于Grub2的多分区USB启动盘制作

  • Post author:
  • Post category:Ubuntu
  • Post comments:5评论

系统: Ubuntu 10.10
工具: Disk Utility 2.30.1

Disk Utility 简介:
Disk Utility 是Ubuntu自带的一个图形化磁盘管理的工具,类似于Windows下面的PM,但是在熟悉了Disk Utility的使用后会发现它在功能及易用性上比PM等工具强上太多,我已经不由自主的喜欢上了这个工具。

继续阅读LiveLinux系列(1)–基于Grub2的多分区USB启动盘制作

Mendeley for linux 高效管理文献

  • Post author:
  • Post category:Ubuntu
  • Post comments:3评论

Mendeley是一个跨平台的文献管理软件,主要用于PDF文件的管理。
Mendeley同时还拥有在线功能,在Mendeley网站上注册帐号后,可以将本地所谓配置文件同步到远程服务器上。同时,Mendeley也为用户提供里一些相应的网络服务,如建立自己的在线文献信息库等等。

由于教育网的原因,Mendeley的网络服务基本处于不可用的状态,对于想使用其离线功能的朋友,可以试试这里:
mendeleydesktop-0.9.8.1-linux-i486.tar.bz2

继续阅读Mendeley for linux 高效管理文献