国内精品综合久久久40p,亚洲综合熟女久久久30p,九九精品99久久久香蕉http://www.shnenglu.com/woooha/zh-cnWed, 07 May 2025 03:25:41 GMTWed, 07 May 2025 03:25:41 GMT60Mesa安裝手記--在Ubuntu 9.10http://www.shnenglu.com/woooha/archive/2010/03/08/109156.html楊帆楊帆Sun, 07 Mar 2010 16:36:00 GMThttp://www.shnenglu.com/woooha/archive/2010/03/08/109156.htmlhttp://www.shnenglu.com/woooha/comments/109156.htmlhttp://www.shnenglu.com/woooha/archive/2010/03/08/109156.html#Feedback5http://www.shnenglu.com/woooha/comments/commentRss/109156.htmlhttp://www.shnenglu.com/woooha/services/trackbacks/109156.html

    學計算機圖形學用到OpenGL,不過想在Ubuntu下進行實現,查查了查,OpenGL linux下的C綁定是Mesa,可是安裝這玩意兒可是費了我一番功夫。

    首先,從www.Mesa3D.org下載了三個文件,MesaDemos-X.Y.Z.tar.gz , MesaGLUT-X.Y.Z.tar.gz,MesaLib-X.Y.Z.tar.gz,分別是DemoGLUT庫和最主要的MesaOpenGL)鏈接文件。這里X.Y.ZMesa的版本,我下載的是7.6.1。解壓后的得到一個文件夾Mesa-X.Y.Z

    bash中進入這個文件夾中,執行./configure進行配置,額,少了一些庫。

    首先是libdrm,在軟件包管理器中,找到了libdrm-dev,安裝后,再次執行./configure

    還是少庫。

    少了dri2proto

    查了查,找到了x11proto-dri2-dev,安裝后執行./configure

    少庫。

    少了xxf86vm

    在軟件包中找到libxxf86vm-dev安裝后,額,不抱希望了,執行./configure

    …………少庫。

    這次是xt

    找了找,在軟件包中找到了libxt-dev,安裝后。./configure

    成功了!提示我make

    哈哈,真高興!可是make就出問題了,提示我少了fdepend這個東西。

    可是我怎么都找不到這個東西在哪里。

    很郁悶。

    繼續上www.Mesa3D.org看看官方的說明,上面說安裝Mesa需要4個東西。

  1. dri2proto version 1.99.3 or later

  2. Linux 2.6.28

  3. libDRM version 2.4.3 or later

  4. Xorg server version 1.5 or later

    前三個,我都有安阿?第四個是什么東西,繼續在軟件包管理器中搗鼓。找到了xorg-dev這個安裝。再次make,竟然成功了!好吧,make install,也成功了。

    然后接下來,驗證Mesa能不能用。

    轉到Mesa-X.Y.Z/progs/demos目錄下,執行./gears,提示找不到libglut.so.3(好像是這個,記不大清了),看看Mesa3D上讓執行這么幾個命令。

  1. cd lib/ (轉到了Mesa-X.Y.Z/lib/目錄下)

  2. export LD_LIBRARY_PATH=${PWD}

  3. export LIBGL_DRIVERS_PATH=${PWD} (if using DRI drivers)

    現在再執行Mesa-X.Y.Z/progs/demos/gears可以運行了,看到了齒輪在轉動!

    可是在Mesa-X.Y.Z/progs/samples/編譯一個文件

             gcc `pkg-config opengl --cflags --libs ` point.c -o point

    出現了好多錯誤。

    額,怎么回事?

    才知道,編譯文件是找不到glut庫,仔細一看才發現,自己編譯文件用的命令錯了,應該是

                gcc `pkg-config glut --cflags --libs ` point.c -o point

    好了,現在一切沒有問題了,安裝成功!




楊帆 2010-03-08 00:36 發表評論
]]>
在不同系統下分配大內存的測試(c.c.l.c上一人的帖子,在老家網吧不方便實驗,記下啦,試試)http://www.shnenglu.com/woooha/archive/2010/02/18/108034.html楊帆楊帆Thu, 18 Feb 2010 12:01:00 GMThttp://www.shnenglu.com/woooha/archive/2010/02/18/108034.htmlhttp://www.shnenglu.com/woooha/comments/108034.htmlhttp://www.shnenglu.com/woooha/archive/2010/02/18/108034.html#Feedback0http://www.shnenglu.com/woooha/comments/commentRss/108034.htmlhttp://www.shnenglu.com/woooha/services/trackbacks/108034.html
測試代碼如下:
#include <stdlib.h>
#include <unistd.h>
int main(){
       void* p=malloc(512*1024*1024);
       if(p==NULL) return -1;
          sleep(10000000);
             return 0;

}


然后我用g++ 4.3.2編譯
g++-4.3.2 -o testm testm.c

開了5個,開到第6個的時候,malloc就返回-1了。可是,可是,令人驚奇的是
這個時候,我無論是用vmstat還是用mdb看,我都還有大量的空閑的物理內存
>::memstat
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     144849               565   14%
ZFS File Data               62043               242    6%
Anon                       146323               571   14%
Exec and libs                3640                14    0%
Page cache                  34357               134    3%
Free (cachelist)            35896               140    3%
Free (freelist)            600734              2346   58%

Total                     1027842              4015
Physical                  1027841              4015
這與我開這幾個程序之前,沒有明顯的變化。(相比而下,在windows下,這個時 候系統已經卡的快嗝屁了)

然后我用ps來看
# ps -eo pid,vsz,rss,args |grep testm
 1298 527292 1356 ./testm
 1309 4224 1256 grep testm
 1300 527292 1356 ./testm
 1302 527292 1356 ./testm
 1296 527292 1356 ./testm
 1304 527292 1356 ./testm

# pmap 1296
1296:    ./testm
08046000       8K rwx--    [ stack ]
08050000       4K r-x--  /tmp/testm
08060000       8K rwx--  /tmp/testm
08062000  524296K rwx--    [ heap ]
FEB70000     320K r-x--  /lib/libm.so.2
FEBCF000       8K rwx--  /lib/libm.so.2
FECD0000      24K rwx--    [ anon ]
FECE0000    1280K r-x--  /usr/lib/libc/libc_hwcap1.so.1
FEE20000      28K rwx--  /usr/lib/libc/libc_hwcap1.so.1
FEE27000       8K rwx--  /usr/lib/libc/libc_hwcap1.so.1
FEE30000      52K r-x--  /usr/lib/libgcc_s.so.1
FEE4C000       4K rwx--  /usr/lib/libgcc_s.so.1
FEE50000       4K rwx--    [ anon ]
FEE60000     856K r-x--  /usr/lib/libstdc++.so.6.0.10
FEF45000     160K rwx--  /usr/lib/libstdc++.so.6.0.10
FEF6D000      24K rwx--  /usr/lib/libstdc++.so.6.0.10
FEF80000       4K r--s-  /var/ld/ld.config
FEF90000       4K rwx--    [ anon ]
FEFA0000       4K rw---    [ anon ]
FEFB0000       4K rw---    [ anon ]
FEFBE000     180K r-x--  /lib/ld.so.1
FEFFB000       8K rwx--  /lib/ld.so.1
FEFFD000       4K rwx--  /lib/ld.so.1
 total    527292K


系統的確給這個進程分配了地址空間(看它的heap有多大),但是壓根兒就沒有給 它分配物理內存。我想不出的是,它依據什么來拒絕新的申請。
由于環境有限,我沒有找到良好的環境在freebsd下重復這個實驗。我在 freebsd.unix-center.net上做這個測試,但是把每個進程分配的內存縮小到64M, 然后開了100個這樣的進程,據估計至少需要6G的內存,malloc一直都是成功的, 我的手酸了,懶得弄了。


最有趣的在于這個:
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main(){
       void* p=malloc(512*1024*1024);
       if(p==NULL) return -1;
    memset(p,0,512*1024*1024);
    free(p);
          sleep(10000000);
             return 0;

}

用ps/pmap去看,事實證明,free函數根本就沒有釋放物理內存。free是把malloc 得到的物理內存還給了自己進程,而不是還給了操作系統。
在這一點上,freebsd是有差別的。執行完free之后,rss明顯降了下來





楊帆 2010-02-18 20:01 發表評論
]]>
久久久久亚洲AV成人片| 怡红院日本一道日本久久| 久久久SS麻豆欧美国产日韩| 亚洲欧美成人综合久久久| 国产精品欧美久久久久无广告| 熟妇人妻久久中文字幕| 久久亚洲精品成人无码网站| 久久精品亚洲男人的天堂| 久久精品国产亚洲AV无码偷窥| 久久久人妻精品无码一区| 国产精品久久新婚兰兰| 久久久久久久精品妇女99| 亚洲成色www久久网站夜月 | 伊人久久大香线蕉综合网站| 91亚洲国产成人久久精品| 久久久久久久久无码精品亚洲日韩| 国产精品一区二区久久精品涩爱 | 99久久成人18免费网站| 久久人人爽人人爽人人片AV东京热 | 国产精品99久久99久久久| 伊人久久大香线蕉亚洲五月天| 久久夜色精品国产亚洲| 国产A三级久久精品| 亚洲综合伊人久久大杳蕉| 伊人久久大香线蕉亚洲| 久久青青草原精品国产| 办公室久久精品| 国产毛片欧美毛片久久久| 久久婷婷五月综合国产尤物app| 亚洲国产小视频精品久久久三级| 热久久视久久精品18| 日韩人妻无码一区二区三区久久| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 亚洲午夜久久久| 99久久精品免费看国产一区二区三区| segui久久国产精品| 久久免费视频网站| 国内精品人妻无码久久久影院导航| 久久成人国产精品免费软件| 日韩精品无码久久一区二区三| 狠狠色丁香婷婷综合久久来来去|