前不久在亚马逊上买了一块戴尔的显示器,型号为 U2414 23.8寸,用来作为笔记本的外接显示器用。本来一直觉得 Ubuntu 使用起来非常简单,各种配置安装也非常方便。 可是终于在外接显示器上遇到了坑,最后经过一段时间的折腾,终于完美地解决了双屏显示的问题。 现在对 Linux 在某些方面(例如硬件方面的兼容性)的易用性算是有了清楚的认识。 以下是对这次折腾经历的记录,用来给其他遇到相同问题的人作为参考。 我的笔记本型号为 ThinkPad T420,独显为 NVIDIA GeForce GT 520M (GF119M),系统为 Ubuntu 14.04 64位。

最开始我使用的是这款显示器自带的一根 DP to Mini DP 的连接线,但是在系统自带的设置里面不能检测到外接显示器,并且外接显示器也一直没有信号输入。为了确定不是连接线的问题,我又买了一根 DP to DP 的线进行尝试。 但还是检测不到外接显示器。 当我使用 xrandr 命令查看,发现确实能够看到 DP 的连接信号,但是系统设置里没有外接显示器。 稍微 Google 了一下,发现 Ubuntu 自带的显卡驱动 nouveau 对外接显示器的支持并不好,因此我决定换成 NVIDIA 的闭源驱动试试,在安装 NVIDIA 驱动之后,外接显示器终于有信号了,但是各种花屏比没有信号好不到哪里去。 又 Google 了一番后也没找到什么明确的解决办法。

最后发现在 BIOS 里将 Display 的 Graphics Device 选项从 NVIDIA Optimus 改成 Discrete Graphics(独立显卡)之后就能用了,完全不知道为什么。 不过之后又出现一个让人不爽的小问题,就是笔记本屏幕的亮度不能修改,并且一直保持最高亮度。 这种情况让我在夜晚不得不关掉笔记本的屏幕,不然会被亮瞎。 这个问题最后在 askubuntu 上找到了解决方案,就是在 /etc/X11/xorg。conf 下为你的笔记本显示器的配置添上如下一行:

Option "RegistryDwords" "EnableBrightnessControl=1" immediately above EndSection

reboot 之后就可以调整笔记本显示器的亮度了。

这是一篇关于如何在 Windows 平台下使用 LLVM 的文章,由 tajpure 转述自 LLVM 官网.

概述

LLVM,命名最早取自底层虚拟机器(Low Level Virtual Machine)的缩写。由很多项目组成,它是一个编译器的基础框架,提供完整的编译系统中间层。使用 Visual Studio 而不是使用 mingw 或 cygwin 来编译 LLVM。这是因为 vc 能编译出更原生的程序,只依赖于 VC 的 dll。

依赖

在你开始使用 LLVM 系统时,你需要看一下如下依赖。提前了解你需要的硬件和软件,会使你的麻烦减少。

硬件要求

1、一个能够良好运行 Visual Studio2012 的系统

2、LLVM 的安装将会占用 3GB 左右的空间

软件要求

1、Visual Studio 2012 及更高版本

2、CMake,用它来产生 LLVM 最新的项目文件

3、如果你想运行 LLVM 测试文件,你需要安装Python(2.4-2.7版本测试可运行)、DnuWin32

4、不要安装 LLVM 在目录名包含空格的目录下,这会导致配置失败

开始

下面是快速开始使用 LLVM 的一份简短实例:

1、阅读文档

2、认真地再读一遍文档

3、记住你已经被两次提醒去阅读文档

4、获取 LLVM 源码

5、使用 CMake 产生 LLVM 最新的项目文件:

  • CMake 安装完成后。CMake 最简单的使用方法是通过 CMake 的图形界面使用。你可以选择一个目录,将 LLVM 解压到其中(推荐使用默认选项)。

  • 查看LLVM CMake 导航获取更多信息关于如何去配置 LLVM 编译

  • CMake 为所有的构建类型产生项目文件。要选择一个特殊的构建类型,你可以使用 VS IDE 的配置管理器,或者当使用 MSBuild 时,你也可以使用/property:Configuration 命令行选项。

6、启动 Visual Studio

  • 在你所创建的项目文件中,你会发现 llvm.sln,双击它打开 Visual Studio

7、编译 LLVM 组件

  • 这个项目可能会仍然可能会被单独构建,但构建他们时不要仅仅选择让他们全部批量构建,而是选择并且构建需要全部构建的项目去全部构建。

  • Fibonacci 项目是一个使用 JIT 的例子程序。修改项目的调试属性去提供一个数字化的命令行参数或者在命令行里运行它。这个程序将会打印绑定的 fibonacci 值

8、在 Visual Studio 里测试 LLVM

  • 如果 %PATH% 不包含 CnuWin32,你能够在 CMake 上指定 LLVM_LIT_TOOLS_DIR 作为给 GnuWin32 的路径

  • 你能够仅仅在构建项目“check”时运行 LLVM 测试。测试结果将会展示在 VS 的输出窗口里。

9、在命令行里测试 LLVM

  • LLVM 测试能够运行通过改变目录至 LLVM 源码目录并运行如下命令:
1
C:\..\llvm> python ..\build\bin\llvm-lit --param build_config=Win32 --param build_mode=Debug --param llvm_site_config=../build/test/lit.site.cfg test

上述例子假定 Python 已经在你的 Path 变量里了,你已经构建了一个 LLVM 的 Win32 调试版本通过一个行构建的标准输出。你不会看到任何不可预见的失败提示,但是会看到许多不支持测试和可预见的失败提示。
一个特殊的测试或测试目录能够被运行如下:

1
C:\..\llvm> python ..\build\bin\llvm-lit --param build_config=Win32 --param build_mode=Debug --param llvm_site_config=../build/test/lit.site.cfg test/path/to/test

一个使用 LLVM 工具链的示例

1、首先,创建一个简单的 C 文件,命名为’hello.c’

1
2
3
4
5
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}

2、接着,将这个 C 文件编译为 LLVM 字节码文件

1
C:\..> clang -c hello.c -emit-llvm -o hello.bc

这样将会创建一个结果文件 hello.bc。你能够直接使用 lli 工具执行这个文件,llc 工具编译它成为本地汇编代码,优化它通过 opt 工具,等等。
另外,你能够直接输出一个可执行文件通过 clang:

1
C:\..> clang hello.c -o hello.exe

3、使用实时编译器运行程序:

1
C:\..> lli hello.bc

4、使用 llvm-dis 实用工具去查看 LLVM 汇编代码:

1
C:\..> llvm-dis < hello.bc | more

5、使用 LLC 代码生成器编译程序成 object code

1
C:\..> llc -filetype=obj hello.bc

6、使用 Microsoft 链接链接成二进制:

1
C:\..> link hello.obj -defaultlib:libcmt

7、执行可执行程序:

1
C:\..> hello.exe

链接

看完少年派之后不得不写一些东西了,酝酿了很久,一直在想这部电影究竟告诉了我些什么。很多人看电影就是仅为娱乐,最能取悦他们的电影价值最高。但我认为电影里承载的思想才是电影的价值所在,真正好的电影可以为现实中茫然而不知所措的人们指明一条出路。

看了很多关于少年派的影评,有大师级深刻入骨分析全片的,也有寥寥数语仅表达自己感慨的。但总是觉得缺点什么,这些影评都太过于着重突出这部电影,反而疏忽了这部电影的受体–观众,从而让人对这部电影的价值不甚明确。

我看电影时总是喜欢将自己与电影联系起来,在现实与电影中建立起映射,借此反思自己的人生。看少年派时,我总觉得派身上有我自己的影子,挥之不去。儿时的派是一个彻头彻尾的信教徒,而我作为一个无宗教信仰的人,对那时候的派一点感觉也没有,只是一个内心软弱,依靠信仰神灵藉以自慰的人罢了。可当第一次派被他父亲逼着亲眼目睹帕克咬死羚羊的全过程时,我开始想这便是所谓的成长吗?粗暴地打破一个孩子关于世界的美好向往,便是让他尽快地成长起来吗?

当派用蹩脚的英语说着“I’m sorry”。拿着斧子向鬼头鱼砍去时,他彻彻底底地臣服于了现实。现实就是那么残酷,就算寄希望于三相神之一的毗湿奴的梦,它也还是那么残酷。派麻木地吃下一片片鱼肉,虽然这个故事已经经过了派这般的美化,可还是显得那般残忍。他吃下的是身体赖以生存的肉,而丢下的是自己最为真挚的灵魂。