在c++,使用cout直接显示float类型的数据,在不同系统上显示方式可能有所不同。
测试代码:
#include <iostream>
using namespace std;
int main()
{
float t=0.000000277;
cout<<t<<endl;
return 0;
}
在LINUX上:
2.77e-07
而在WINDOWS上结果如下:
2.77e-007
主要目的是想在ubuntu中使用WINDOWS服务器上的空间,所有的数据都是挂在WINDOWS服务器上的一个磁盘阵列,操作方法参考此处。
首先安装:
sudo aptitude install smbfs
然后准备一个目录:
sudo mkdir /media/Storage
输入帐号,放在/root/.cifscredentials文件,内容如下:
username=Guest
password=
分别对应WINDOWS共享下的用户名和密码。
然后编辑/etc/fstab,添加一行:
//192.168.0.10/SHARENAME /media/Storage cifs auto,iocharset=utf8,uid=USER,gid=users,credentials=/root/.cifscredentials,file_mode=0775,dir_mode=0775 0 0
然后修改上述的信息为你实际的信息,
192.168.0.10对应服务器地址
/media/Storage对应ubuntu中的目录
user对应共享后的用户名
users对应共享后的用户组
file_mode=0775,dir_mode=0775的意义是对所有用户都可读写。
然后使用下面的命令执行mount过程:
sudo mount -a
如果共享名称里包含空格,可以使用\040来代替。
1、首先安装基础程序:
sudo wine mingw32 mingw32-binutils mingw32-runtime
2、安装QT4支持(LINUX下的支持):
sudo apt-get install libqt4-core libqt4-gui libqt4-qt3support libqt4-sql libqt4-debug-dev libqt4-dev
3、下载QT4 for win程序:
wget http://wftp.tu-chemnitz.de/pub/Qt/qt/source/qt-win-opensource-4.1.2-mingw.exe
4、安装:
wine qt-win-opensource-4.1.2-mingw.exe
中间会提示找不到MINGW32的位置,没关系,可以直接跳过。
5、修改specs文件
sudo cp -Rf /usr/share/qt4/mkspecs/win32-g++ /usr/share/qt4/mkspecs/win32-x-g++
sudo nano /usr/share/qt4/mkspecs/win32-x-g++/qmake.conf
把和下面相关的内容都进行修改:
QMAKE_CXX = i586-mingw32msvc-g++
QMAKE_INCDIR = /usr/i586-mingw32msvc/include/
QMAKE_INCDIR_QT = /usr/local/qt4-w32/4.1.2/include
QMAKE_LIBDIR_QT = /usr/local/qt4-w32/4.1.2/lib
QMAKE_LINK = i586-mingw32msvc-g++
# ne pas oublier le -mwindows ici
QMAKE_LFLAGS = -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mwindows
#isEqual(MINGW_IN_SHELL, 1) {
QMAKE_DIR_SEP = /
QMAKE_COPY = cp
QMAKE_COPY_DIR = cp -r
QMAKE_MOVE = mv
QMAKE_DEL_FILE = rm -f
QMAKE_MKDIR = mkdir -p
QMAKE_DEL_DIR = rm -rf
#} else {
# QMAKE_COPY = cp
# QMAKE_COPY_DIR = cp -r
# QMAKE_MOVE = mv
# QMAKE_DEL_FILE = rm -f
# QMAKE_MKDIR = mkdir -p
# QMAKE_DEL_DIR = rm -rf
#}
# Enlever les .exe et rajouter -qt4
QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc-qt4
QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic-qt4
# Je n'ai pas trouvé d'équivalent de ce fichier, j'ai quand meme enlevé le .exe
QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc
QMAKE_RC = i586-mingw32msvc-windres
QMAKE_STRIP = i586-mingw32msvc-strip
6、QT4的跨平台编译支持就完成了,以后可以这样编译WINDOWS程序:
qmake-qt4 -project
qmake-qt4 -spec win32-x-g++
make
首先安装mingw32,从SF上下载安装包,直接安装。
安装完成后修改环境变量,把mingw/bin目录加到path里,安装的时候我选择了gcc, g++和make。
wxWidgets使用安装包安装完成后,还需要进行一下编译:
cd wxWidgets-2.6.3/build/msw
mingw32-make -f makefile.gcc
然后安装sqlite3,需要下载3个文件,sqlite3.dll, sqlite3.def,sqlite3.h
用dlltool制作sqlite3的lib文件(.a):
dlltool -k -d sqlite3.def -lsqlite3.a
拷贝sqlite3.a文件到mingw/lib目录下,还需要:
ld sqlite3.a
然后拷贝sqlite3.dll到windows/system32目录或者你的程序目录下,拷贝sqlite3.h到mingw/include目录。
最后就是需要参照某个makefile.gcc文件来制作自己的makefile。
需要注意,本来我的程序是以minimal程序的makefile.gcc为蓝本的,后来发现编译总是有问题,提示wxDatePickerCtrl有问题,但是我编译samples/calendar没有任何问题,后来比较后发现minimal在link的时候少了一个库: -lwxmsw26d_adv,若程序用到了sqlite3,还需要-lsqlite3。
参考其中的SQLITE部分: http://mpa.itc.it/radim/wingrass/INSTALL
下载源码,解压缩:
cd sqlite-3.3.5
nano Makefile.linux-gcc
#modify:
#TOP = ../sqlite-3.3.5
#这个修改不知道有没有意义
# Note: SQLite is using for example its own parser (lemon) which must be compiled first for Linux
make -f Makefile.linux-gcc lemon keywordhash.h
cp Makefile.linux-gcc Makefile.mingw-gcc
nano Makefile.mingw-gcc
# modify Makefile.mingw-gcc (BCC,TCC,AR,RANLIB):
# 修改一下相关部分:
# BCC = i586-mingw32msvc-gcc -g -O2
# TCC = i586-mingw32msvc-gcc -O6
# AR = i586-mingw32msvc-ar cr
# RANLIB = i586-mingw32msvc-ranlib
# delete tclsqlite.o from LIBOBJ in main.mk
make -f Makefile.mingw-gcc libsqlite3.a
i586-mingw32msvc-g++ --shared -o sqlite3.dll \
-Wl,--out-implib=libsqlite3.dll.a \
-Wl,--export-all-symbols \
-Wl,--enable-auto-import \
-Wl,--whole-archive libsqlite3.a \
-Wl,--no-whole-archive -lmingw32
i586-mingw32msvc-strip sqlite3.dll
cp sqlite3.dll /usr/i586-mingw32msvc/bin/
cp libsqlite3.dll.a /usr/i586-mingw32msvc/lib
cp sqlite3.h /usr/i586-mingw32msvc/include
原文:http://www.wxwidgets.org/wiki/index.php/Cross-Compiling_Under_Linux
下载allportscombine包,然后:
./configure --with-msw --target=i586-mingw32msvc --host=i586-mingw32msvc --build=i386-linux --enable-unicode --prefix=/usr/i586-mingw32msvc/
make
make install
注意编译的时候要分两步走,不能象G++那样一步到位:
i586-mingw32msvc-g++ -c -o minimal.o minimal.cpp `/usr/i586-mingw32/bin/wx-config --cxxflags`
i586-mingw32msvc-g++ -o minimal.exe minimal.o `/usr/i586-mingw32/bin/wx-config --libs`
因为wxWidgets是以动态库的方式编译的,还需要拷贝相关的DLL:
cp /usr/i586-mingw32msvc/lib/wx*.dll .
同时,还要拷贝mingw32的一个库过来:
cp /usr/share/doc/mingw32-runtime/mingwm10.dll.gz .
gzip -d *.gz
然后就可以进行测试了:
wine minimal.exe
MinGW - Minimalist GNU For Windows
http://www.mingw.org
UBUNTU下可以直接安装:
sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
安装后编译程序可以:
i586-mingw32msvc-g++(编译C++程序)
i586-mingw32msvc-gcc(编译C程序)
用法和gcc/g++非常类似。
如hello.c程序:
#include
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
MessageBox (NULL, "Hello", "Hello Demo", MB_OK);
return (0);
}
编译:
i586-mingw32msvc-gcc hello.c -o hello.exe -mwindows
注:-mwindows指示其编译的是windows程序,若编译的是console(命令行)程序,则不需要这个参数。
若安装了wine,还可以测试一下这个程序:
wine hello.exe
不过,我本来是想编译wxWidgets程序的,但发现这个好像还是有点问题,估计还需要wxWidgets for mingw32@linux
目前,windows下的版本,postgresql官方已经开始支持,目前是8.0.1版本。POSTGIS目前官方尚不支持windows版本,但有支援者在进行同步维护windows版本,目前是1.0-rc6版本,估计很快就是1.0版本了。
安装很简单,首先要安装postgresql,注意其有两个帐号,一是系统帐号,二是数据库管理帐号。安装程序可以新建用户,要提到一点,目前的postgresql数据库不支持远程安装,就是说,不能通过远程桌面进行安装(这个限制,不爽)。windows版本还包括了pgadmin3,图形化的管理界面。
然后安装postgis,需要前面安装postgresql的管理员帐号,同时其还要安装一个postgis数据库。
默认情况下,可执行文件都安装到postgresql的bin目录,几个SQL文件安装在postgresql的share/contrib目录下。
对于中文用户来讲,首先要考虑数据库的编码问题,可以使用unicode,utf8,euc_cn等编码,默认的是unicode编码。
第一次使用unicode编码时移植linux下的应用,遇到了很多非常奇怪的问题。改用euc_cn编码,问题就少多了。
建库:
createdb -U postgres -E EUC_CN db
(linux环境下本机默认都不需要认证密码,但在windows系统下,默认是需要验证密码的)
alter database db set client_encode="EUC_CN"
(这个要进入到psql环境中才能运行的,不确定是否必须,在linux环境下不需要)
搭建postgis环境:
creatlang -U postgres plpgsql db
(这个在windows下默认好象是不需要处理的)
引入postgis支持:
psql -U postgres -d db -f lwpostgis.sql
psql -U postgres -d db -f spatial_ref_sys.sql
生成矢量数据的sql文件:
shp2pgsql xx.shp xx_table > xx.sql
导入到数据库:
psql -U postgres -d db -f xx.sql
到此,您的基本的postgis数据库就已经搭建好了,剩下的工作就是看您怎么去最大的压榨postgis的功能了。