當前位置:首頁 » 操作系統 » log4cpp源碼

log4cpp源碼

發布時間: 2022-05-28 19:05:08

❶ 誰推薦個好的C++編輯器

C++開發常用工具「群英會」

開發環境

---->Turbo c

DOS時代c語言開發的經典工具,目前適合兩類人使用:c語言beginner(尤其是學生一族),具有懷舊情節的專業人士:)

---->Visual C++ 6.0/7.0

穩定而強大的IDE開發環境,具有豐富的調試功能,定製宏的功能也是其一大特色。Microsoft的經典之作,功能強大自不必言說。附帶的一些工具也很不錯,比如:Spy++。但編譯器較之同類,支持c++標準的程度不夠好,尤其6.0及以前的版本。

---->BCB

Borland的C++ Builder是可以與VC匹敵的另一個功能強大的IDE,速度和穩定性稍遜,但對c++標准支持的程度較好。

---->Cygwin

Windows平台下的C++編譯器,基於gcc,又完全兼容Window特有的東西,比如對winsock的支持。從http://www.cygwin.com可以找到有關Cygwin的詳細信息。

---->Dev-c++

Windows平台下,一個類似VC、BCB的c++ IDE開發環境,屬於共享軟體。界面親切優雅,size也不大,其4.9.x版有中文語言支持,無需漢化。編譯器基於gcc,完全支持STL。但是對於規模較大的軟體項目,恐怕難以勝任。可以從:http://www.bloodshed.net/dev/devcpp.html找到有關Dev-c++的有關信息。

---->Source Insight

有著和Dev c++一樣漂亮的界面,提供代碼的編輯和察看功能,具有豐富的語法加亮功能,可以像VC一樣自動彈出成員函數的提示,並具有快速方便的函數跳轉功能(但是跳轉速度似乎有點慢)。只是默認設置不適合時,需要仔細的調整和修改。無法查找經typedef之後的名字。

輔助工具

---->Visual Assist

VC IDE環境下的輔助編程工具,能識別各種關鍵字、函數、成員變數,自動給出tip,並自動更正大小寫錯誤,標示拼寫錯誤等。是VC開發的良好伴侶。

---->Understand for C++

一款c/c++IDE編程的輔助工具,支持反向工程,代碼導向和一些統計功能,從http://www.scitools.com可以找到有關Understand for C++的詳細信息。

程序編輯器

---->EditPlus

一款很不錯的文本編輯軟體,功能強大卻又十分輕巧。支持不同語言的語法加亮,還有Project組織功能,具有豐富的自定義功能。通過設置User Tool,可以和其他語言編譯器結合,形成一個簡單的IDE。

---->Ultra Edit

功能和EditPlus相當,通過腳本文件提供的配置功能可以定製編輯環境,但自6.0版以後一直沒多大變化,就編程而言,自定義設置沒有EditPlus方便。

---->EMACS

公認的世界上功能最多,最復雜的文本編輯器,其實也可以當作程序員用的編輯器。

---->Visual Slick Edit

一個功能強大的程序員用編輯器。最值得一提的是其定製功能,很好用,可以和EMACS相比。自帶了一套PCODE解釋器,用c的語法,還可以掛接動態庫。配合mingw一起使用很方便。從http://www.slickedit.com可以找到有關SlickEdit的詳細信息。

---->IQEdit

全功能的程序員用編輯器,界面很漂亮,從http://pwksoftware.com可以找到有關IQEdit的詳細信息。

UML/建模

---->Rational Rose

強大的建模工具,早已「家喻戶曉」,功過自然不必多加評說了。從http://www.rationalsoftware.com.cn可以找到有關Rational Rose的詳細信息。

---->Visual Modeler

MS Visual Studio 6.0所附的小工具。屬於Rational和MicroSoft合作的戰略產品,是Rose的簡化版。
---->Visio

Microsoft的建模工具,感覺更人性化一些,但功能沒有Rose多、強、專,支持正向的代碼生成,以及對代碼的反向工程。

---->Together

另一款功能強大的建模工具,用java編寫而成,口碑不錯,不過速度稍稍慢了一些。從http://www.togethersoft.com可以找到有關Togather的詳細信息,另外,以下網址提供了一個有關Together的教程: http://www.cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu/together/TCCGuide6

---->Visual UML

支持多種語言類型,比如:VC、VB、DELPHI、CORBA IDL等,可以直接從UML設計圖生成代碼,簡單易用,完全適合Personal use,界面也很清爽。從http://www.visualObject.com可以找到有關Visual UML的詳細信息。

---->SmartDraw

通用圖表製作軟體,可以用來製作組織機構圖、流程圖、統計圖表等。隨帶有圖庫,基本滿足製作各類圖表的需要。從http://www.smartdraw.com可以找到有關SmartDraw的詳細信息。

---->PlayCase

國產面向對象的建模軟體,兼容UML和IDEF,輕量級軟體,只是界面看起來有點簡朴,乃是高展先生用Delphi完成的。

版本控制

---->ClearCase

Rational的版本控制管理軟體,功能強大,可以控制多種類型的文檔,甚至包括Word、Excel、PowerPoint文檔。但使用復雜,不易上手,且不是免費軟體。

---->CVS

為基於Web的分布式協同開發提供了版本控制管理手段,且是免費軟體,可以通過腳本定製功能。但在許可權控制方面功能相對較弱。

---->VSS

微軟的版本控制管理工具,功能相對簡單,適合於小型團隊開發,將其整合到微軟的其他開發工具中,使用起來十分方便。

---->SourceOffSite

微軟為開發人員提供的遠程訪問VSS資料庫的工具,使資料庫得以遠程更新,以支持遠程辦公。其他的版本管理工具還包括:PVCS、VCS、RCS等。

XML

---->expat

用於讀取和處理XML文檔的c函數庫,最初是James Clark的個人作品,簡單輕巧,且速度快。但支持的編碼方式有限,最遺憾的是不支持中文。從http://expat.sourceforge.net可以找到有關expat的詳細信息。

---->xml4c

IBM的XML Parser,用c++語言寫就,功能超級強大。號稱支持多達100種字元編碼,能夠支持中文,適合於大規模的xml應用。若只是很小范圍的應用,則非最佳選擇,畢竟,你需要「背負」約12M左右的dll的沉重負擔。從http://www.alphaworks.ibm.com/tech/xml4c可以找到有關xml4c的詳細信息。

---->Xerces c++

Apache的XML項目,同樣是c++實現,來源於IBM的xml4c,因此編程介面也是和xml4c一致的。但是目前只支持少數的字元編碼,如ASCII,UTF-8,UTF-16等,不能處理包含中文字元的XML文檔。從 http://xml.apache.org/xerces-c可以找到有關Xerces c++的詳細信息。

測試

---->CppUnit

一個c++的單元測試框架,可以通過派生測試類的方式,定製具體的測試方案。xUnit家族的一員,從JUnit移植而來,JUnit是Java語言的單元測試框架。從http://cppuint.sourceforge.net可以找到有關CppUint的詳細信息。

---->Rational ROBOT

Rational的自動化測試工具,通過編寫腳本的方式提供自動化測試特性。其GUI方式的腳本錄制功能,有助於對GUI軟體進行功能測試;其VU方式的腳本錄制功能,有助於測試某些軟體的數據通訊功能。

---->Rational Purify

同樣是Rational的自動化測試工具,不需要被測程序的源代碼,可以用來檢查內存訪問錯誤、Windows API調用錯誤等,以完成軟體的可靠性測試,屬於白盒測試。

其他的Rational測試工具還包括:TestFactory、PureCoverage、TestManager等。

日誌

---->log4cpp

一個用於日誌記錄的c++函數庫,可以將內容以定製的方式記錄到不同的目的地,比如:文件、控制台syslog等,同時還可以通過控制記錄級別來屏蔽掉某些無關記錄。從http://log4cpp.sourceforge.net可以找到有關log4cpp的詳細信息。

注釋

---->Doc++

注釋文檔生成工具,根據源程序中的文檔注釋,可以輸出TeX和HTML格式的文檔。除了支持c/c++語言外,還支持IDL和java。僅提供命令行使用方式。從http://docpp.sourceforge.net可以找到有關Doc++的詳細信息。

---->Doxygen

注釋文檔生成工具,較之Doc++功能更為齊全,可以生成包括HTML、PDF、RTF在內的多種格式的文檔,並有GUI界面,除了支持c/c++語言外,還支持IDL、java、PHP、c#等。從http://www.stack.nl/~dimitri/doxygen可以找到有關Doxygen的詳細信息。

❷ proxmox ve 伺服器,配置了spice 客戶端是UBUNTU,控制台點了spice下載了配置文件,可是如何打開

協議是服務端與客戶端通信的基礎,
客戶端是享受服務的終端機器,
服務端是提供服務的後台機器。

0. 安裝前預備工作:
由於要從Git 伺服器下載源碼安裝,所以需要安轉git工具

[plain] view plain print?
<span style="font-size:18px;">sudo apt-get install build-essential autoconf git-core
</span>
當然,還有編譯安裝包使用的工具也要安裝:

[plain] view plain print?
<span style="font-size:18px;">sudo apt-get install libtool liblog4cpp5-dev libavcodec-dev libssl-dev xlibmesa-glu-dev libasound-dev libpng12-dev libfreetype6-dev \
libfontconfig1-dev libogg-dev libxrandr-dev kvm libgcrypt-dev libsdl-dev libnss3-dev libpixman-1-dev libxfixes-dev libjpeg8-dev \
libsasl2-dev python-pyparsing </span>

最後准備,創建一個文件夾,用來存放下載的安裝包(如果你對下載安裝位置很清楚,當然也可以不用新建這個文件夾)

cd
mkdir spice-sources
cd spice-sources

1. SPICE安裝依賴包:

1.1 libcacard
This library is what SPICE uses to emulate smart cards and smart card readers.
git clone git://people.freedesktop.org/~alon/libcacard
cd libcacard
./autogen.sh
make
sudo make install
cd ..

1.2. 安裝協議(SPICE protocol headers)
The first dependency to install is the spice protocol headers.
wget http://spice-space.org/download/releases/spice-protocol-0.8.0.tar.bz2
tar xjvf spice-protocol-0.8.0.tar.bz2
cd spice-protocol-0.8.0
mkdir m4
./configure
make
sudo make install
cd ..

1.3.安裝celt
SPICE requires a specific version of the celt low-latency audio codec (0.5.1.3). Since it is unavailable in the Ubuntu repositories, it must also be compiled.
wget http://downloads.us.xiph.org/releases/celt/celt-0.5.1.3.tar.gz
tar xvzf celt-0.5.1.3.tar.gz
cd celt-0.5.1.3/
./configure
make
sudo make install
cd ..

2. 安裝客戶端(SPICE client)
This gives us spicec, the spice client. It's used to connect to SPICE guests.
客戶端用來鏈接服務端的。

wget http://spice-space.org/download/releases/spice-0.8.1.tar.bz2
tar xjvf spice-0.8.1.tar.bz2
cd spice-0.8.1
./configure --enable-smartcard
make
sudo make install
cd ..

This step is possible to perform on a 32-bit host; it's only installing the SPICE client.
值得注意的是:32位系統只能安裝SPICE 的客戶端,下面的服務端是無法安裝的!

3. 安裝SPICE server

Now, it's time to build the SPICE server itself. SPICE has been rolled into QEMU now, so this step amounts to installing a recent version of QEMU. In fact, we will be pulling the latest QEMU source code for version 0.14. Oddly enough, QEMU 0.14 is available in the Ubuntu repositories, but SPICE support is not included in the build.
以上的意思是說QEMU已經包含 SPICE服務,

First, we need to change an environment variable so that ./configure can find the spice protocol libraries we installed. You will need to set this variable anytime you want to use qemu with SPICE, so it's easiest to put it in your .bashrc.
修改環境變數以至於讓configure找到我們安裝spice協議的函數庫。

echo "export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}" >> ~/.bashrc
source ~/.bashrc

Now, we can continue with the installation. Note that if you require a specific softmmu target, you can add a list of them with the --target argument. By default, QEMU only builds with support for 32-bit x86 guests.
繼續安裝,(PS:如果在之前已經安裝過QEMU的話,這一步可以省略)

wget http://download.savannah.gnu.org/releases/qemu/qemu-0.14.0.tar.gz
tar xzvf qemu-0.14.0.tar.gz
cd qemu-0.14.0
./configure --enable-spice --enable-kvm --enable-io-thread --audio-drv-list=alsa,oss --enable-system
make
sudo make install

Now, we need to over some BIOS files that qemu will need to start SPICE VMs. We just need to put them in a location that QEMU expects them to be.
拷貝相關文件到QEMU 目錄下讓qemu啟動虛擬機。(PS:如果之前已經安裝QEMU,此步只需確認在/usr/share/qemu/目錄下有以下兩個文件即可,如果沒有,那就得手動拷貝過去)

sudo cp pc-bios/vgabios-qxl.bin /usr/share/qemu/
sudo cp pc-bios/pxe-e1000.bin /usr/share/qemu/
cd ..

Now, qemu with SPICE support is installed in /usr/local/bin, and the ordinary system qemu is installed in/usr/bin. We'll make a shortcut command called 'qemu-spice' that you can invoke separately from the system qemu (which doesn't have SPICE support).
以上將含有SPICE 服務的QEMU安裝到usr/local/bin(PS:也可能在usr/bin下),普通 QEMU 系統安裝在/usr/bin下。以下是創建一個名字叫做qemu-spice的工具,其實是qemu的一個拷貝。

cd /usr/local/bin
sudo mv qemu qemu-spice

至此,server安裝完畢。

4.使用SPICE
4.1使用Client
To invoke the spice client, use the command:調用客戶端,使用如下命令
注意:<server hostname> 是伺服器的地址,如果你的電腦同時安裝客戶服務端,那麼你可以使用127.0.0.1來自己測試,<port number> 是服務端制定的埠號

spicec -h <server hostname> -p <port number>

4.2 使用Server
Invoking the spice server is rather more complex than the client, since you have to set the parameters of the virtualized guest. For example,
調用Server要比客戶端麻煩得多。

qemu-spice -spice port=5930,disable-ticketing -drive file=/path/to/image -vga qxl -device AC97 -usbdevice tablet -m 1024 -enable-kvm -net nic -net user

注意:file=/path/to/image 要替換為系統的鏡像文件,比如我的file=/kvm/vdisk.img

這樣就啟動了SPICE 服務端,然後在客戶機上使用客戶端命令
spicec -h <server hostname> -p <port number>
就可以在SPICE客戶端啟動服務機上的虛擬機系統了。

linux上編譯log4cpp1.0包時出錯:BasicLayout.cpp:37: error: expected constructor, destructor, or type

出這個問題不應該,我懷疑你的這個程序源代碼和你當前用的系統發布時間差距太大,導致這個命令執行有問題。
或者就是某些腳本的語法已經變了。你用錯 shell 解釋器了
——————————————————————————
你的 configure 參數有問題?你最好能貼出全部的命令和輸出。

陳學陽 那傻-逼就是刷子。我見到他好幾次發根本沒意義的內容了,他現在都刷的快比我等級高了。我都懶的在認真回答問題了。網路那群腦殘也不管管。網路這么大的網站還需要這么多垃圾水貼充門面?
我可以幫助你,你先設置我最佳答案後,我網路Hii教你。

❹ Log4cpp的下載安裝

2.1 下載
下載版本0.3.5rc3,這個版本目前是最穩定的,版本1.0在VC中表現不穩定。下載後的包名字為:log4cpp-0.3.5rc3.tar.gz(源代碼包)和log4cpp-docs-0.3.5rc3.tar.gz(文檔壓縮包)。將它們解壓後放入D盤。
2.2 在VC6中編譯Log4cpp
進入D:log4cpp-0.3.5rc3msvc6目錄,打開VC6的工作區msvc6.dsw,將其中的工程都刪除,只保留log4cpp和log4cppDLL兩個工程。分別編譯它們的Debug和Release版本。
在VC6中編譯Log4cpp會報錯,其實只有一個錯誤,即不能在頭文件中定義變數,同時給變數賦默認值。修改方法如下:將頭文件Priority.hh中的這一行:
static const int MESSAGE_SIZE = 8;
改為:
static const int MESSAGE_SIZE;
並在Priority.cpp中的所有include語句後加上:const int log4cpp::Priority::MESSAGE_SIZE = 8;
編譯鏈接成功後會得到log4cppD.dll、log4cppD.lib(Debug版的dll和lib文件)和log4cpp.dll、log4cpp.lib(Release版的dll和lib文件)。新建目錄D:log4cpp-0.3.5rc3lib,將以上四個文件拷貝到該目錄下。在VC中添加設置lib和include路徑。
將D:log4cpp-0.3.5rc3lib加入系統的Path路徑中。

❺ Log4cpp的優點

Log4cpp是個基於LGPL的開源項目,移植自Java的日誌處理跟蹤項目log4j,並保持了API上的一致。其類似的支持庫還包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等。
Log4cpp有如下優點:
1. 提供了可擴展的多種日誌記錄方式;
2. 提供了NDC(嵌套診斷上下文),可用於多線程、多場景的跟蹤調試;
3. 提供了完整的日誌動態優先順序控制,可隨時調整需要記錄的日誌優先順序;
4. 可通過配置文件完成所有配置並動態載入;
5. 性能優秀,內存佔用小,經過編譯後的log4cpp.dll大小僅有160kb;
6. 代碼級的平台無關性,Log4cpp源代碼經過編譯後,適用於大多數主流的操作系統和開發工具;
7. 概念清晰,學習和使用方便,熟練程序員一天之內即可很好地應用log4cpp進行開發

❻ linux上編譯log4cpp1.0包時出現錯誤。

出這個問題不應該,我懷疑你的這個程序源代碼和你當前用的系統發布時間差距太大,導致這個命令執行有問題。
或者就是某些腳本的語法已經變了。你用錯 shell 解釋器了
——————————————————————————
你的 configure 參數有問題?你最好能貼出全部的命令和輸出。

陳學陽 那傻-逼就是刷子。我見到他好幾次發根本沒意義的內容了,他現在都刷的快比我等級高了。我都懶的在認真回答問題了。網路那群腦殘也不管管。網路這么大的網站還需要這么多垃圾水貼充門面?

❼ 什麼是GPL和LGPL

GNU通用公共許可證(簡稱為GPL),是由自由軟體基金會發行的用於計算機軟體的許可證。最初由Richard Stallman為GNU計劃而撰寫。目前大多數的GNU程序和超過半數的自由軟體使用此許可證。此許可證最新版本為「版本2」,1991年發布。GNU寬通用公共許可證(簡稱LGPL)是由GPL衍生出的許可證,被用於一些GNU程序庫。

http://wiki.ccw.com.cn/GPL

GPL和LGPL是GNU的兩種License。越來越多的自由軟體(Free Software)使用GPL作為其授權聲明,如果對GPL一點都不了解,有可能在使用自由軟體時違反了GPL的授權。如果是個人或不正規的公司倒也無所謂,但如果是有規模的公司,恐怕會有被起訴的風險。

在使用Log4cpp時我想到了授權的事情,於是有了興趣對GPL做一下了解。這是必要的,因為公司也維護了一個驗證過的自由軟體庫,裡麵包含的自由軟體除了功能上是可靠的,另外就是一定可以被私有使用的,否則後果很嚴重(黎叔很生氣!)。

Log4cpp最初的版本使用GPL作為授權聲明的,在0.2.1版本以後改用更為寬松的LGPL。LGPL最初是Library GPL的縮寫,後來改稱作Lesser GPL,即為更寬松的GPL。當一個自由軟體使用GPL聲明時,該軟體的使用者有權重新發布、修改該軟體,並得到該軟體的源代碼;但只要使用者在其程序中使用了該自由軟體,或者是使用修改後的軟體,那麼使用者的程序也必須公布其源代碼,同時允許別人發布、修改。也就是說,使用GPL聲明下的的自由軟體開發出來的新軟體也一定是自由軟體。

LGPL是GPL的變種,也是GNU為了得到更多的甚至是商用軟體開發商的支持而提出的。與GPL的最大不同是,可以私有使用LGPL授權的自由軟體,開發出來的新軟體可以是私有的而不需要是自由軟體。所以任何公司在使用自由軟體之前應該保證在LGPL或其它GPL變種的授權下。

以下是Richard Stallman關於GPL和LGPL的論述

為什麼你不應該使用LGPL發布你的下一個庫

GNU計劃在使用庫時有兩個首要的許可證.一個是GNU LGPL(庫GPL);另一個是普通的GNU GPL.選擇不同的許可有很大的不同:選擇LGPL允許在私有程序中使用該庫;選擇普通的GPL則只允許在自由軟體中使用它.

關於哪一種許可證對指定的庫是最好的這一問題實際上是一個策略問題,它取決於實際情況.當前,大多數的GNU庫被採用LGPL,這意味著我們只使用著其中的一個策略,而忽略了另一個. 所以現在我們在尋求更多以普通的GPL許可證形式發布的庫.

私有軟體開發者有金錢上的優勢;自由軟體開發者需要相互之間利用各自的優勢.對一個庫採用普通的GPL對自由軟體開發者的優勢要大於對私有軟體開發者: 他們可以使用的庫對於私有軟體開發者是不可利用的.

使用普通的GPL並不是對於所有的庫都有好處.在某些情況下更有理由來使用LGPL.最常見的情況就是當一個自由庫的特性可以很容易地被私有軟體以其他可替代庫來實現.在這種情況下,庫不能給與自由軟體任何特別的優勢,因而最好還是為LGPL發布該庫.

這也就是為什麼我們為GNU C 庫選擇LGPL.總之,有很多的其他C庫;我們使用GPL發布該庫,將迫使私有軟體開發者不得不使用其它的庫--對他們來說這不成問題,而我們則有了麻煩.

然而,當一個庫所提供的功能是非常獨特的時候,如GNU Readline, 情況就大不一樣了. Readline庫可實現輸入編輯和記錄互動式程序操作,這在別處通常是不可多得. 在GPL下發布它並限制它只能在自由程序中使用, 這我們的社團是一個重要的促進.至少今天某個應用程序之所以是自由軟體,只是因為它必需要用到Readline.

如果我們收集一些強大的、私有軟體中沒有相類似東西的、採用GPL的庫,它們將提供一系列有用的模塊用於新的自由軟體的構造. 這對於將來的自由軟體開發將是一個顯著的優勢, 一些項目將為了使用這些庫而考慮使軟體自由化. 大學的項目是易於被影響的;而且今天,隨著某些公司開始考慮使軟體自由化, 甚至一些商業項目也會由此受到影響.

私有軟體開發者試圖否認自由競爭的重要性, 他們會拚命說服作者不要將庫使用GPL來發布. 例如,他們會呼籲利己主義,信誓旦旦地說如果我們讓他們在私有軟體產品中使用代碼,將有「更多的用戶」用到該庫. 流行是一種誘惑,它使一個庫開發者傾向於相信這種觀點:社會首先需要的是促進一種庫的流行;.

但是我們不應該聽從這種誘惑,因為如果我們聯合起來,我們可以做得更好.我們這些自由軟體開發者應該相互支持. 通過發布只能為自由軟體使用的庫,我們可以互相幫助,使彼此的自由軟體包優於其它的私有替代品. 整個自由軟體運動將會有更多的機會,因為自由軟體作為一個整體將會在競爭中表現更佳.

因為"LGPL(Library GPL)"的稱呼傳達了關於這一問題的錯誤觀點,我們計劃將稱呼改為"次級GPL(Lesser GPL)".事實上要更換名稱要花一定的時間,但你不必再等--你可以現在就發布應用GPL許可證的庫.
http://hi..com/%CD%F5%BE%FC/blog/item/922a6059345ad12a2834f013.html

❽ Gpl lgpl 在中國又沒用的是吧

好像本來就是在中國用的耶…
GNU通用公共許可證(簡稱為GPL),是由自由軟體基金會發行的用於計算機軟體的許可證。最初由Richard Stallman為GNU計劃而撰寫。目前大多數的GNU程序和超過半數的自由軟體使用此許可證。此許可證最新版本為「版本2」,1991年發布。GNU寬通用公共許可證(簡稱LGPL)是由GPL衍生出的許可證,被用於一些GNU程序庫。

http://wiki.ccw.com.cn/GPL

GPL和LGPL是GNU的兩種License。越來越多的自由軟體(Free Software)使用GPL作為其授權聲明,如果對GPL一點都不了解,有可能在使用自由軟體時違反了GPL的授權。如果是個人或不正規的公司倒也無所謂,但如果是有規模的公司,恐怕會有被起訴的風險。

在使用Log4cpp時我想到了授權的事情,於是有了興趣對GPL做一下了解。這是必要的,因為公司也維護了一個驗證過的自由軟體庫,裡麵包含的自由軟體除了功能上是可靠的,另外就是一定可以被私有使用的,否則後果很嚴重(黎叔很生氣!)。

Log4cpp最初的版本使用GPL作為授權聲明的,在0.2.1版本以後改用更為寬松的LGPL。LGPL最初是Library GPL的縮寫,後來改稱作Lesser GPL,即為更寬松的GPL。當一個自由軟體使用GPL聲明時,該軟體的使用者有權重新發布、修改該軟體,並得到該軟體的源代碼;但只要使用者在其程序中使用了該自由軟體,或者是使用修改後的軟體,那麼使用者的程序也必須公布其源代碼,同時允許別人發布、修改。也就是說,使用GPL聲明下的的自由軟體開發出來的新軟體也一定是自由軟體。

LGPL是GPL的變種,也是GNU為了得到更多的甚至是商用軟體開發商的支持而提出的。與GPL的最大不同是,可以私有使用LGPL授權的自由軟體,開發出來的新軟體可以是私有的而不需要是自由軟體。所以任何公司在使用自由軟體之前應該保證在LGPL或其它GPL變種的授權下。

以下是Richard Stallman關於GPL和LGPL的論述

為什麼你不應該使用LGPL發布你的下一個庫

GNU計劃在使用庫時有兩個首要的許可證.一個是GNU LGPL(庫GPL);另一個是普通的GNU GPL.選擇不同的許可有很大的不同:選擇LGPL允許在私有程序中使用該庫;選擇普通的GPL則只允許在自由軟體中使用它.

關於哪一種許可證對指定的庫是最好的這一問題實際上是一個策略問題,它取決於實際情況.當前,大多數的GNU庫被採用LGPL,這意味著我們只使用著其中的一個策略,而忽略了另一個. 所以現在我們在尋求更多以普通的GPL許可證形式發布的庫.

私有軟體開發者有金錢上的優勢;自由軟體開發者需要相互之間利用各自的優勢.對一個庫採用普通的GPL對自由軟體開發者的優勢要大於對私有軟體開發者: 他們可以使用的庫對於私有軟體開發者是不可利用的.

使用普通的GPL並不是對於所有的庫都有好處.在某些情況下更有理由來使用LGPL.最常見的情況就是當一個自由庫的特性可以很容易地被私有軟體以其他可替代庫來實現.在這種情況下,庫不能給與自由軟體任何特別的優勢,因而最好還是為LGPL發布該庫.

這也就是為什麼我們為GNU C 庫選擇LGPL.總之,有很多的其他C庫;我們使用GPL發布該庫,將迫使私有軟體開發者不得不使用其它的庫--對他們來說這不成問題,而我們則有了麻煩.

然而,當一個庫所提供的功能是非常獨特的時候,如GNU Readline, 情況就大不一樣了. Readline庫可實現輸入編輯和記錄互動式程序操作,這在別處通常是不可多得. 在GPL下發布它並限制它只能在自由程序中使用, 這我們的社團是一個重要的促進.至少今天某個應用程序之所以是自由軟體,只是因為它必需要用到Readline.

如果我們收集一些強大的、私有軟體中沒有相類似東西的、採用GPL的庫,它們將提供一系列有用的模塊用於新的自由軟體的構造. 這對於將來的自由軟體開發將是一個顯著的優勢, 一些項目將為了使用這些庫而考慮使軟體自由化. 大學的項目是易於被影響的;而且今天,隨著某些公司開始考慮使軟體自由化, 甚至一些商業項目也會由此受到影響.

私有軟體開發者試圖否認自由競爭的重要性, 他們會拚命說服作者不要將庫使用GPL來發布. 例如,他們會呼籲利己主義,信誓旦旦地說如果我們讓他們在私有軟體產品中使用代碼,將有「更多的用戶」用到該庫. 流行是一種誘惑,它使一個庫開發者傾向於相信這種觀點:社會首先需要的是促進一種庫的流行;.

但是我們不應該聽從這種誘惑,因為如果我們聯合起來,我們可以做得更好.我們這些自由軟體開發者應該相互支持.

熱點內容
查看存儲過程許可權 發布:2024-05-18 17:18:33 瀏覽:191
php類self 發布:2024-05-18 17:15:03 瀏覽:894
手機2b2t的伺服器地址是多少 發布:2024-05-18 17:14:56 瀏覽:188
戴爾8490哪個配置比較合理 發布:2024-05-18 17:14:51 瀏覽:168
刪除sqlserver服務 發布:2024-05-18 16:47:06 瀏覽:323
密碼盒的密碼是多少錢 發布:2024-05-18 16:43:52 瀏覽:95
linux哪個c語言編譯器好用 發布:2024-05-18 16:30:03 瀏覽:469
搜狐視頻無法緩存 發布:2024-05-18 16:30:03 瀏覽:310
小鳥雲伺服器值不值得買 發布:2024-05-18 16:30:01 瀏覽:899
durbin演算法 發布:2024-05-18 16:29:57 瀏覽:556