Archive for the ‘技术’ Category
体会了一下Snow Leopard的一个开发bug
终于在公司搞到了一台旧的iMac 5.1, Intel Core 2 Duo 2.0 GHz/ 2G DDR2 667 MHz。
装上了Snow Leopard和官方发布的Qt 4.7.0 Beta 2和Qt Creator 2.1快照版,想debug进Qt库,竟然不成,咨询了公司内外的Mac开发朋友,原来我遇到了Apple的bug。
DYLD_IMAGE_SUFFIX=_debug makes application crash on Mac OS X – Snow Leopard
DYLD_IMAGE_SUFFIX causing havoc on Mac OS X Snow Leopard
而且变态的Apple自己的bug tracker还是封闭的,只有号码,看不到具体情况。
最后的解决办法是:
cd /usr/lib
sudo mv libSystem.B_debug.dylib libSystem.B_debug.dylib.bak
sudo mv libmx.A_debug.dylib libmx.A_debug.dylib.bak
之前还以为/Developers/SDKs/MacOSX10.6.sdk/usr/lib的有效呢。
BTW,学习了OS X下的ldd就是otool。
其它参考文档:
Technical Note TN2124: Mac OS X Debugging Magic
2010年7月30日注:升级到XCode 3.2.3后,依然崩溃。
Windows 7 Home Basic的一些知识
今天才发现Windows 7 Home Basic这东西有激活地域限制并且没有64位版本。
并且只在Emerging Markets销售,通俗的说可以理解为像DVD一样有中国区和欧美区之分。
看来想在挪威使用国内的Windows 7 Home Basic是不太现实了。
How to support your own type in QVariant
#include <QCoreApplication>
#include <QVariant>
#include <QString>
struct MyStruct
{
int a;
double b;
QString c;
};
struct MyPowerStruct
{
int a;
double b;
MyStruct c;
};
Q_DECLARE_METATYPE(MyStruct)
Q_DECLARE_METATYPE(MyPowerStruct)
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
MyStruct v01 = { 1, 5.0, QString("Nokia Qt") };
QVariant var0;
var0.setValue(v01);
MyStruct v02 = var0.value();
MyPowerStruct v11 = { 10, 0.5, {1, 5.0, QString("Nokia Qt") } };
QVariant var1;
var1.setValue(v11);
MyPowerStruct v12 = var1.value();
return 0;
}
Reference:
Qt 4.6 Documentation: Q_DECLARE_METATYPE
Git中创建空白branch的方法
因为工作需要,要在一个git repo中创建一个空白的branch,就是和其它branch以及revision没有任何关系的branch,公司的git master(一共就两个)帮我搜了搜找到了答案:
Git Community Book: Creating New Empty Branches
git symbolic-ref HEAD refs/heads/newbranch
rm .git/index # windows: del .git\index
git clean -fdx
#do work#
git add your files
git commit -m 'Initial commit'
Build Qt with S60 5.0 Public SDK(2nd version)
Build Qt with S60 5.0 Public SDK(2nd version)
Platform: Windows XP with SP3(now we only support Qt/S60 on it.)
1. SYMBIAN Development Environment
For downloading the packages, you need to register an account in the forum of Nokia,
http://www.forum.nokia.com/main/registration/registration.html
1-1. Carbide.C++
http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/IDEs/Carbide.c++/
http://sw.nokia.com/id/7710eba7-4da7-4ddc-a52a-53b506cadb4a/Carbide_cpp_v2_0_en.exe
Carbide.C++ 2.0
Carbide_cpp_v2_0_en.exe 203MB
1-2. S60 Platform SDKs for Symbian OS, for C++
http://www.forum.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html
http://sw.nokia.com/id/577ad48d-290c-4bb5-8bdf-779ea8a5bc6c/S60_5th_Edition_SDK_v1_0_en.zip
S60 Platform SDKs for Symbian OS, for C++, 5th Edition
S60_5th_Edition_SDK_v1_0_en.zip 622MB
1-3. Open C/C++ Plug-in
http://www.forum.nokia.com/info/sw.nokia.com/id/91d89929-fb8c-4d66-bea0-227e42df9053/Open_C_SDK_Plug-In.html
http://sw.nokia.com/id/fbe59b85-a621-404b-94d7-94ca818e576a/s60_open_c_cpp_plug_in_v1_6_en.zip
Open C/C++ Plug-in 1.6
s60_open_c_cpp_plug_in_v1_6_en.zip 34MB
2. Installation
Please install following packages as default path.
Install ActivePerl-5.6.1.638-MSWin32-x86.msi.
Install Java SE Development Kit (JDK), JDK 6 Update 16, jdk-6u16-windows-i586.exe
Install Carbide.C++.
After installed Carbide.C++, please download x86Tools_3.2.5_Symbian_b482_qt.zip. Please extract all files in it, and copy or move them to overwrite this folder, C:\Program Files\Nokia\Carbide.c++ v2.0\x86Build.
Please run this, Start->Carbide.c++ v2.0->Configure environment for WINSCW command line.
And you also need to use Git to get Qt from Qt Git Repo, better to download this version of Git.
Please also make sure the path of our perl(default: C:\Perl\bin) should be before the perl in git(default: C:\Program Files\Git\bin) in PATH.
For Host Tools:
For MinGW user, please download MinGW-5.1.4.exe(Note: here the 5.1.4 is the version of installer, the compiler version is 3.4.5.), use it install g++ and make at least. And please add the env for MinGW, C:\MinGW\bin, at the beginning of the PATH.
For Microsoft Visual C++ Express Edition user, please download the vcsetup.exe and install 2008 with SP1.
For Device:
You need to install RVCT 2.2, we are using “Build 683″. You can use RVCT to build Qt libraries and applications which could running on S60 devices.
You can also install the “CSL Arm Toolchain”, if you forgot it, you can find it in Start->S60 Developer Tools->5th Edition SDK->v1.0->Tools->CSL Toolchain (GCCE) Install. You can use GCCE to build Qt applications with pre-build Qt libraries, and run your Qt applications on devices.
3. Build Qt with S60 5.0 Public SDK
For MinGW user, just open a Windows Command Prompt.
For VC2008EE user, please open Visual Studio 2008 Command Prompt.
C:
mkdir git
cd C:\git
git clone -n git://gitorious.org/qt/qt.git
cd qt
git checkout -b 4.6 origin/4.6
set PATH=C:\git\qt-s60\bin;%PATH%
For MinGW user:
configure -platform win32-g++ -xplatform symbian-abld -qt-sql-sqlite -system-sqlite -no-script
For VC2008EE user:
configure -platform win32-msvc2008 -xplatform symbian-abld -qt-sql-sqlite -system-sqlite -no-script
make debug-winscw // for emulator
make release-armv5 // for devices arvm5
4. Build Examples
cd C:\git\qt\examples\widgets\analogclock
qmake
make debug-winscw // for emulator
make release-armv5 // for devices arvm5
make release-gcce // for devices gcce
5. Run
In Emulator:
C:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\winscw\udeb\epoc.exe
“Menu”(or click the middle one of the 3 buttons)->QtExamples->analogclock
In Device:
createpackage C:\git\qt\src\s60installs\Qt_for_S60_template.pkg release-armv5 // create Qt install package, it locates in C:\git\qt\src\s60installs\qt_for_s60_release-armv5.sis
createpackage C:\git\qt\examples\widgets\analogclock\analogclock_template.pkg release-armv5 // create analogclock armv5 install package, it locates in C:\git\qt\examples\widgets\analogclock\analogclock_release-armv5.sis
createpackage C:\git\qt\examples\widgets\analogclock\analogclock_template.pkg release-gcce // create analogclock gcce install package, it locates in C:\git\qt\examples\widgets\analogclock\analogclock_release-gcce.sis
Before you install Qt install package, you should also insall following packages:
pips_s60_1_6_SS.sis
openc_ssl_s60_1_6_SS.sis
STDCPP_s60_1_6_SS.sis
You can find them in C:\S60\devices\S60_5th_Edition_SDK_v1.0\nokia_plugin\openc\s60opencsis and C:\S60\devices\S60_5th_Edition_SDK_v1.0\nokia_plugin\opencpp\s60opencppsis.
NOTE: If you are using virtual machine, please do not use Windows Remote Desktop to connect it. The default audio driver for it will cause S60 Emulator crash.
Specify a Script to Run on Startup Shutdown Logon Logoff on Windows
It’s very easy to do it on Unix/Linux, cron is a very powerful tool for it.
But how to do it on Windows?
Run->”gpedit.msc”->”Computer Configuration\Windows Settings” for Startup/Shutdown or “User Configuration\Windows Settings” for Logon/Logoff.
Reference:
How to: Add startup and shutdown scripts in Windows – Online Training and Tutorials
Specify a Script to Run on Startup Shutdown Logon Logoff
Build Qt with S60 5.0 Public SDK
Build Qt with S60 5.0 Public SDK
Platform: Windows XP with SP3(now we only support Qt/S60 on it.)
1. SYMBIAN Development Environment
For downloading the packages, you need to register an account in the forum of Nokia,
http://www.forum.nokia.com/main/registration/registration.html
1-1. Carbide.C++
http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/IDEs/Carbide.c++/
http://sw.nokia.com/id/7710eba7-4da7-4ddc-a52a-53b506cadb4a/Carbide_cpp_v2_0_en.exe
Carbide.C++ 2.0
Carbide_cpp_v2_0_en.exe 203MB
1-2. S60 Platform SDKs for Symbian OS, for C++
http://www.forum.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html
http://sw.nokia.com/id/577ad48d-290c-4bb5-8bdf-779ea8a5bc6c/S60_5th_Edition_SDK_v1_0_en.zip
S60 Platform SDKs for Symbian OS, for C++, 5th Edition
S60_5th_Edition_SDK_v1_0_en.zip 622MB
2. Installation
Please install above 2 packages as default path.
Installation order: Carbide.C++, S60 SDK.
After Carbide.C++, you may need to install ActivePerl-5.6.1.638-MSWin32-x86.msi:
http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi
And you also need to use Git to get Qt from Qt S60 Git Repo, better to download this version of Git.
Please also make sure the path of our perl(default: C:\Perl\bin) should be before the perl in git(default: C:\Program Files\Git\bin) in PATH.
Please run this, Start->Carbide.c++ v2.0->Configure environment for WINSCW command line.
3. Build Qt with S60 5.0 Public SDK
cd C:\git
git clone git://gitorious.org/+qt-s60-developers/qt/qt-s60.git
cd qt-s60
set PATH=C:\git\qt-s60\bin;%PATH%
configure -platform win32-mwc -xplatform symbian-abld -openssl-linked -qt-sql-sqlite -system-sqlite
make debug-winscw
4. Build Examples
cd C:\git\qt-s60\examples\widgets\analogclock
qmake
make debug-winscw
C:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\winscw\udeb\epoc.exe
“Menu”(or click the middle one of the 3 buttons)->QtExamples->analogclock
Qt/S60代码仓库也开放了
Trolltech Labs Blog: Qt for S60 repository going public
Qt S60 Git Repo
注意:Qt/S60在S60 5.0 Public SDK中需要最新版的Open C,估计会在近期发布。大家可以先尝试3.2和3.1。同样因为编译器的原因,大家不能编译用于手机硬件的Qt库,这个需要商业版的RCVT。

