《Cross-Platform Programming with wxWidgets》
看了下,看着看着就想自己实践下,但发现一直编译不过来,原来是库出现了问题
正好下了2.6.3的,于是便编译了下
这里讲讲我为什么要安装多个版本的,其实主要是安装其他软件的时候需要一些2.6.1的包,比如AMULE等
1.构建编译环境(这点我也不太清楚,具体的可以去论坛上查查)
代码:
sudo apt-get install build-essential
2.在下载回来的包解压,然后输入命令
代码:
sudo mkdir buildgtk
cd buildgtk
../configure --with-gtk --enable-debug --prefix=/workspace/library/wxWidget (这是将文件安装到/workspace/library/wxWidgets, 这是我自己的文件甲,当然你可以换个,如果不指定 prefix 默认是安装在 /usr/local/里面)
make
make install (如果不行,就换成 sudo make install)
sudo ldconfig
这样库就安张好了.
为了方便编译,还需要做点东西
代码:
cd /usr/local/bin
sudo ln -s /workspace/library/wxWidgets/bin/wx-config wx-config
2。如果你已经安装过其他低版本的wxWidgets包,比如2.6.1的
如果需要写的程序用新的版本编译,可以将低版本的wx-config换过名字
这里我是直接删除再新建的
将新版本的wx-config放在/usr/local/bin中
代码:
cd /usr/bin
sudo rm wx-config
sudo ln -s /usr/lib/wx/config/gtk2-unicode-release-2.6 wx-config-2.6.1
如果需要旧版本来编译可以
g++ file.cpp `wx-config-2.6.1 --libs --cxxflags` -o file
注意:
如果安装2个版本后,运行2个不同版本的程序时候,就会有一个报错,
error while loading shared libraries: libwx_gtk2_xrc-2.6.so.0: cannot open shared object file: No such file or directory
这时候就要在配置动态文件的导入路径了
代码:
sudo gedit /etc/ld.so.conf
输入:(如果这个文件存在,只要在后面添加新版本库的位置,但是我的不存在)
/lib
/usr/lib
/usr/local/lib
/usr/X11R6/lib
/workspace/library/wxWidgets/lib
然后保存,再让系统重新配置动态文件导入的顺序
sudo ldconfig
其实还有个法子,就是在当前的工程文件夹中,新建一个连接,链接到你要用到的版本上,比如我要用新的2.6.3版本
我就可以在自己的工程文件甲中
cd 到你的工程文件甲里面
sudo ln -s /workspace/library/wxWidgets/bin/wx-config wx-config
等到编译的时候就只要
g++ file.cpp `./wx-config --libs --cxxflags` -o file
这种方法对于需要多个版本的更加灵活,就可以知道工程使用的是哪个版本
代码: 全选