月度归档:2015年06月

eclipsecpp从可执行程序员中导入源代码并调试

如果寻找跨平台IDE及调试环境,那eclipse是最佳选择了,因为它有一项超强功能:可以从可执行程序员导入源代码并调试程序,这种特性是非常适合自定义MakeFile项目,不需要改变项目现有结果,即可自由开发和调试了。
导入源码方式很多,
1.project explorer面板,右键菜单选择import菜单项。
2.在import对话框里选择c/c++,在展开的子选择项中选择c/c++ executable,然后点击下一步。
3.选择包含调试信息的可执行程序,然后下一步,再点击完成,这时会自动弹出调试信息配置框。
4.在这个调试配置框内,可以配置gdb版本以及环境变量等。
本人使用的是eclipse-cpp4.4 luna版本,操作系统是centos5.8

三种标准库链接方式

Linux 应用程序因为 Linux 版本的众多与各自独立性,在工程制作与使用中必须熟练掌握如下两点才能有效地工作和理想地运行。
1.Linux 下标准库链接的三种方式(全静态 , 半静态 (libgcc,libstdc++), 全动态)及其各自利弊。
2.Linux 下如何巧妙构建 achrive(*.a),并且如何设置链接选项来解决 gcc 比较特别的链接库的顺序问题。
全静态:
1.-static -pthread -lrt -ldl
2.不会发生应用程序在 不同 Linux 版本下的标准库不兼容问题。
3.生成的文件比较大,应用程序功能受限(不能调用动态库等)
全动态
1.-pthread -lrt -ldl
2.生成文件是三者中最小的
3.比较容易发生应用程序在不同 Linux 版本下标准库依赖不兼容问题。
半静态 (libgcc,libstdc++)
1.-static-libgcc -L. -pthread -lrt -ldl
2.灵活度大,能够针对不同的标准库采取不同的链接策略,从而避免不兼容问题发生。
3.结合了全静态与全动态两种链接方式的优点。
4.比较难识别哪些库容易发生不兼容问题,目前只有依靠经验积累。
5.某些功能会因选择的标准库版本而丧失。

Linux 静态库链接顺序问题及解决方法:
正如 GCC 手册中提到的那样:
It makes a difference where in the command you write this option; the linker
searches and processes libraries and object files in the order they are specified.
Thus, ‘ foo.o -lz bar.o ’ searches library ‘ z ’ after file ‘ foo.o ’ but before
‘ bar.o ’ . If ‘ bar.o ’ refers to functions in ‘ z ’ , those functions may not be loaded.
为了解决这种库链接顺序问题,我们需要增加一些链接选项 :
$(CXX) $(LINKFLAGS) $(OBJS) -Xlinker “-(” $(LIBS) -Xlinker “-)” -o $@
通过将所有需要被链接的静态库放入 -Xlinker “-(” 与 -Xlinker “-)” 之间,可以是 g++ 链接过程中, 自动循环链接所有静态库,从而解决了原本的链接顺序问题。
涉及链接选项:-Xlinker
-Xlinker option
Pass option as an option to the linker. You can use this to supply system-specific
linker options which GCC does not know how to recognize.

adobe flash player 已经终止一项可能不安全的操作

在启动Flash调试时,需要连接网络,结果弹出以下提示,解决方法如下:

打开如下地址:http://www.macromedia.com/support/documentation/cn/flashplayer/help/settings_manager04.html

请注意一定要用IE浏览器打开,才能配置成功,如果使用其它浏览器例如谷歌浏览器,则配置不成功。

如下是我的配置:

以下是摘录官方原文:

base32源码

= 5) {
$vbits -= 5;
$output .= $BASE32_ALPHABET[$v >> $vbits];
$v &= ((1 << $vbits) - 1); } } if ($vbits > 0) {
$v <<= (5-$vbits); $output .= $BASE32_ALPHABET[$v]; } return $output; } function base32_decode($input) { $output = ''; $v = 0; $vbits = 0; for($i = 0, $j = strlen($input); $i < $j; $i++) { $v <<= 5; if ($input[$i] >= 'a' && $input[$i] <= 'z') { $v += (ord($input[$i]) - 97); } elseif ($input[$i] >= '2' && $input[$i] <= '7') { $v += (24 + $input[$i]); } else { exit(1); } $vbits += 5; while($vbits >= 8){
$vbits -= 8;
$output .= chr($v >> $vbits);
$v &= ((1 << $vbits) - 1); } } return $output; } $encode = base32_encode('肖斌-https://xiaobin.net/'); $decode = base32_decode($encode); var_dump($encode, $decode); ?>

TortoiseGit中使用PuTTY或者OpenSSH的配置

鼠标右键选择TortoiseGit——Settings——Network——SSH
如果是PuTTY模式,则在SSH客户端输入框填写:
C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
该模式是使用puttygen生成sshkey的。
如果是OpenSSH模式,则填写:
C:\Program Files (x86)\Git\bin\ssh.exe
SSH模式,需要手动生成sshkey,可使用以下命令行:

ssh-keygen -t ed25519

$ ssh-keygen -t rsa -C “abc@admin.com”,此命令会在个人帐号下生成.ssh目录,在该目录下,有两个文件id_rsa和id_rsa.pub,把.pub文件的内容拷贝到gitlab的配置中,即可。
$ cat ~/.ssh/id_rsa.pub
在拉取代码或提交代码时,如果提示:Agent admitted failure to sign using the key错语,则需调用:ssh-add解决。

github上创建可提交的克隆
git clone https://account:password@github.com/xxx/yyy.git aixuefo

git clone git@github.com:kxtry/yyy.git aixuefo
后者相比前者是使用SSH方式,更安全。
如果不想提交,则
git clone https://github.com/xxx/yyy.git aixuefo
创建分支
$ git branch test
切换分支
$ git checkout test
提交创建远程分支并同步当前内容到该远程分支
$ git push origin test
删除本地分支
$ git branch -d xxxxx

Android开发SDK下载地址

国内的一些Android的镜像收集地址,非常实用。
http://www.androiddevtools.cn/
环境搭建过程参照:
http://doc.qt.io/qt-5/gettingstarted.html

GDB调试的补丁,是用于替换NDK内自带的GDB.
http://download.qt.io/official_releases/gdb/

只需下载SDK Tools包,因为启动它后,可以自由下载所有其它依赖的包。
格式:android-sdk_r24.3.4-windows.zip
http://dl.google.com/android/android-sdk_r24.3.4-windows.zip

————————————————————–

相关资源包下载,参照如下:

sudo vi /etc/hosts

添加

74.125.206.93 dl-ssl.google.com

2014.7

ADT Bundle
http://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.zip
http://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
http://dl.google.com/android/adt/adt-bundle-mac-x86_64-20140702.zip
http://dl.google.com/android/adt/adt-bundle-linux-x86-20140702.zip
http://dl.google.com/android/adt/adt-bundle-linux-x86_64-20140702.zip

SDK Tools Only
http://dl.google.com/android/android-sdk_r23.0.2-windows.zip
http://dl.google.com/android/installer_r23.0.2-windows.exe
http://dl.google.com/android/android-sdk_r23.0.2-macosx.zip
http://dl.google.com/android/android-sdk_r23.0.2-linux.tgz

Android Studio
http://dl.google.com/android/studio/install/0.8.6/android-studio-bundle-135.1339820-windows.exe
http://dl.google.com/android/studio/install/0.8.6/android-studio-bundle-135.1339820-mac.dmg
http://dl.google.com/android/studio/install/0.8.6/android-studio-bundle-135.1339820-linux.tgz

Android NDK
http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86.zip
http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86_64.zip
http://dl.google.com/android/ndk/android-ndk32-r10-darwin-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk32-r10-darwin-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk64-r10-windows-x86.zip
http://dl.google.com/android/ndk/android-ndk64-r10-windows-x86_64.zip
http://dl.google.com/android/ndk/android-ndk64-r10-darwin-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk64-r10-darwin-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk64-r10-linux-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk64-r10-linux-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk-r10-cxx-stl-libs-with-debug-info.zip

2014.6

Android Studio 0.8

http://dl.google.com/android/studio/install/0.8.0/android-studio-bundle-135.1245622-windows.exe
http://dl.google.com/android/studio/install/0.8.0/android-studio-bundle-135.1245622-mac.dmg
http://dl.google.com/android/studio/install/0.8.0/android-studio-bundle-135.1245622-linux.tgz

Android SDK only r23

http://dl.google.com/android/android-sdk_r23-windows.zip
http://dl.google.com/android/installer_r23-windows.exe
http://dl.google.com/android/android-sdk_r23-macosx.zip
http://dl.google.com/android/android-sdk_r23-linux.tgz

ADT Bundle r23

http://dl.google.com/android/adt/adt-bundle-linux-x86_64-20140624.zip
http://dl.google.com/android/adt/adt-bundle-linux-x86-20140624.zip
http://dl.google.com/android/adt/adt-bundle-windows-x86-20140624.zip
http://dl.google.com/android/adt/adt-bundle-windows-x86-20140624.zip
http://dl.google.com/android/adt/adt-bundle-mac-x86_64-20140624.zip

Android NDK r9d

http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip
http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip
http://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk-r9d-cxx-stl-libs-with-debug-info.zip

Android NDK r6b

Windows

http://dl.google.com/android/ndk/android-ndk-r6b-windows.zip

Mac OS X(intel)

http://dl.google.com/android/ndk/android-ndk-r6b-darwin-x86.tar.bz2

Linux

http://dl.google.com/android/ndk/android-ndk-r6b-linux-x86.tar.bz2

Android SDK 3.2

Windows

http://dl.google.com/android/android-sdk_r12-windows.zip

http://dl.google.com/android/installer_r12-windows.exe

Mac OS X (intel)

http://dl.google.com/android/android-sdk_r12-mac_x86.zip

Linux(i386)

http://dl.google.com/android/android-sdk_r12-linux_x86.tgz

Android NDK r6

Windows

http://dl.google.com/android/ndk/android-ndk-r6-windows.zip

Mac OS X(intel)

http://dl.google.com/android/ndk/android-ndk-r6-darwin-x86.tar.bz2

Linux 32/64-bit (x86)

http://dl.google.com/android/ndk/android-ndk-r6-linux-x86.tar.bz2

Android SDK 3.1

Windows

http://dl.google.com/android/android-sdk_r11-windows.zip

http://dl.google.com/android/installer_r11-windows.exe

Mac OS X(intel)

http://dl.google.com/android/android-sdk_r11-mac_x86.zip

Linux(i386)

http://dl.google.com/android/android-sdk_r11-linux_x86.tgz

Android NDK r5b

Windows

http://dl.google.com/android/ndk/android-ndk-r5b-windows.zip

Mac OS X(intel)

http://dl.google.com/android/ndk/android-ndk-r5b-darwin-x86.tar.bz2

Linux

http://dl.google.com/android/ndk/android-ndk-r5b-linux-x86.tar.bz2

Android SDK 3.0

Windows

http://dl.google.com/android/installer_r10-windows.exe

http://dl.google.com/android/android-sdk_r10-windows.zip

Mac OS X(intel)

http://dl.google.com/android/android-sdk_r10-mac_x86.zip

Linux(i386)

http://dl.google.com/android/android-sdk_r10-linux_x86.tgz

Android SDK 2.3

Windows

http://dl.google.com/android/android-sdk_r08-windows.zip

http://dl.google.com/android/installer_r08-windows.exe

Linux (i386)

http://dl.google.com/android/android-sdk_r08-linux_86.tgz

MAC OS X (intel)

http://dl.google.com/android/android-sdk_r08-mac_86.zip

Android NDK r5

Windows

http://dl.google.com/android/ndk/android-ndk-r5-windows.zip

Mac OS X (intel) r5

http://dl.google.com/android/ndk/android-ndk-r5-darwin-x86.tar.bz2

Linux 32/64-bit (x86) r5

http://dl.google.com/android/ndk/android-ndk-r5-linux-x86.tar.bz2

mysql默认值

如果一个字段中没有指定DEFAULT修饰符,MySQL会依据这个字段是NULL还是NOT NULL自动设置默认值。如果指定字段可以为NULL,则MySQL为其设置默认值为NULL。如果是NOT NULL字段,MySQL对于数值类型插入0,字符串类型插入空字符串,时间戳类型插入当前日期和时间,ENUM类型插入枚举组的第一条。