在 windows 上使用 ag 搜索

安装 chocolately

  • 用管理员登录,打开 cmd.exe ,执行命令
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

安装 ag

choco install ag

在 emacs 中使用 ag 搜索

  • 添加目录到 PATH 环境变量
C:\ProgramData\chocolatey\bin
  • 在 spacemacs 中, SPC s a 是 ag 的操作前缀

在 windows 上使用 oh-my-zsh

安装 cygwin

  • 安装 cygwin 64 位 到 D:/cygwin 目录
    • 添加两个国内镜像地址

      http://mirrors.163.com/cygwin/
      http://mirrors.sohu.com/cygwin/
      
  • 安装基本功能
  • 下载 apt-cygD:/cygwin/bin 目录, 改名为 apt
  • 安装软件

    apt install curl git zsh chere
    
  • 去掉路径 /cygdriver 前缀,修改 /etc/fstab

    none / cygdrive binary 0 0
    
  • 去掉 zsh 启动提示,修改 /cygwin/bin/xhere

    # echo Starting $1;
    

安装 oh-my-zsh

  • 执行安装命令
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  • 修改 ~/.zshrc

    ZSH_THEME="ys"
    DISABLE_AUTO_UPDATE="true"
    DISABLE_UNTRACKED_FILES_DIRTY="true"
    plugins=(git autojump)
    
  • 安装 autojump

    git clone git://github.com/joelthelion/autojump.git
    cd /autojump
    ./install.py #在 bash 下安装
    
  • 修改 .oh-my-zsh/themes/ys.zsh-theme,删除 hg-info git-info 两行

安装 cmder

  • 下载 cmder_mini 并解压,添加快捷方式到桌面
  • 解决中文乱码问题,进入设置 Settings -> Startup -> Environment,添加

    set LANG=zh_CN.UTF-8
    
  • 添加 oh-my-zsh Task,进入设置 Settings -> Startup -> Tasks, 点“+”号

    oh-my-zsh
    Hotkey: Ctrl-Alt-O
    Task parameters: /icon D:\cygwin\Cygwin-Terminal.ico
    Commands: sh -c "/bin/xhere /bin/zsh.exe '%V'"
    
  • 设置默认 Task,进入设置 Settings -> Startup

    Specified named task: {oh-my-zsh}
    
  • 去掉 git 旧版本提示,修改 d:/green/cmder_mini/vender/init.bat

    rem echo Found old git version in "!test_dir!", but not using...
    

整合到 total commander

  • USERCMD.ini 最后添加

    [em_Everything]
    cmd=D:\Program Files (x86)\Everything\Everything.exe
    param="-search "%P ""
    
    [em_cmder]
    cmd=D:\green\cmder_mini\cmder.exe
    param="%P "
    
  • Wincmd.ini 中修改

    C+F=em_Everything
    CA+G=cm_ExecuteDOS
    C+G=cm_cmder
    

MINGW 和 jni 相关几个问题

生成 jni 头文件方法

# file: src/com/litchi/HelloWord.java
cd src
javah com/litchi/HelloWorld

MINGW 编译 jni 无法被 java 加载问题

因为 dll 中导出的函数签名与 VC 生成的不一致。需要加上编译参数

-Wl,--add-stdcall-alias

用 strip 减小可执行文件大小

动态库 *.so *.dll

可以删除所有符号

strip -s *.so 

静态库 *.a

只能删除调试符号

strp -g --strip-unneeded *.a

windows 下 clang 编译后无法查看 string 变量值问题

ubuntu 上用 lldb 可以正常调试,在 windows 上用 gdb 无法调试。开始以为是 mingw/clang/gdb 间的版本差异无法查看 std::string 变量值,尝试了各种版本组合,都不行。

stackoverflow 上找到了这个回答,原因是 clang 默认不生成 std::string 的调试信息,需要另外安装 libstdc++ 的编译符号表才能调试。

在 cmake 中加入这个编译选项,可以解决此问题

if((CMAKE_BUILD_TYPE STREQUAL Debug) OR (CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo))
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-limit-debug-info")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-limit-debug-info")
endif()

另外需要注意的是:

  • mingw 版本升级后,影响头文件和 lib 兼容,经常需要修改代码才能编译通过。
  • clang 版本升级仅影响二进制兼容,不影响代码兼容。
  • 目前比较稳定的组合是 clang400 + mingw540

windows 下安装 clang4.0

  • 下载 llvm4.0-win32 ,安装到 D:/llvm32
  • 下载 mingw-get , 安装到 D:/MinGW
  • D:/llvm32/bin D:/MinGW/bin 添加到 PATH 变量
  • 添加下列环境变量

    CC=clang
    CXX=clang++
    CFLAGS=-target i686-pc-windows-gnu
    CXXFLAGS=-target i686-pc-windows-gnu
    
  • clang3.7 版本之前,不需要设置 CFLAGS CXXFLAGS 编译目标,因为 windows 下仅支持 MinGW 编译工具;clang3.8 版本之后,需要设置编译目标,因为可以支持 MSVC 编译工具,默认编译目标是 i686-pc-windows-msvc
  • 如果需要 64 位编译环境,则 llvm 和 mingw 都要安装 64 位版本的。
  • 如果是 64 位系统,可以直接安装 llvm 64 位,兼容编译 32 位和 64 位程序