導航:首頁 > 源碼編譯 > 編譯log4c源碼

編譯log4c源碼

發布時間:2022-07-16 04:52:32

A. c語言程序編譯過程包括哪四個

C語言編譯過程分成四個步驟: 
1,由.c文件到.i文件,這個過程叫預處理 
2,由.i文件到.s文件,這個過程叫編譯 
3,由.s文件到.o文件,這個過程叫匯編 
4,由.o文件到可執行文件,這個過程叫鏈接
用gcc查看預處理過程(假設源文件叫hello.c) 
gcc -o hello.i hello.c -E 
然後用 vi hello.i 即可查看生成的預處理文件
按ESC 輸入:$ 跳到預處理文件 可看到hello.c源碼
宏的本質:預處理階段的單純的字元串替換
預處理階段,不考慮C語法

B. Visual Studio 2019怎麼編譯C語言源程序

1、首先,打開C語言編輯器工具,然後在該工具中編寫程序的源代碼,如下圖所示,然後進入下一步。

C. C語言代碼編譯成的是機器碼,那麼怎麼實現可移植性呢

C語言寫的代碼編譯成了機器碼,與編譯器有關,與當前的電腦的CPU沒有關系

有個概念叫交叉編譯,我們做嵌入式的,就靠這個工作了
也就是在PC上編譯的機器碼,下載到其他的晶元裡面,讓它在這個晶元里運行

只要其他的電腦也支持同樣的編譯器產生的機器碼,就可以一致到它上面

D. Linux中源碼編譯安裝程序包括哪些基本步驟

第一步:創建編譯腳本
進入到源碼目錄 執行 ./configure --prefix=/.../.....(--prefix=後面是想要安裝到的目錄)
第二部:編譯
執行 make
第三部:安裝
執行 make install
當然上面這幾部都是最基本的步驟,如果想優化編譯,要在./configure 後面加參數,或者configure之後手動修改Makefile文件 如O2(優化等級) FLAGS 等編譯參數的修改。
--------------------------------------------------------------------------------------------------------------
以上都是源碼包的編譯
如果是自己寫的C代碼 直接 用gcc編譯即可。
例如 編譯test.c
執行 gcc -o test test.c即可將test.c編譯為可執行的文件 test

自己打出來的 要採納啊!

E. 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進行開發

F. 求LINUX下,C語言編寫的日誌輸出源碼~

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dirent.h>
#include <time.h>
#define LOGFILE "./dir_log_0"
int g_Count;
//#define MAXLEN 1024
void WriteDebugLog(char *str);
int main(int argc, char **argv)
{
char str[1024]={0};
strcpy(str,"file no find");
int i=0,j=0;
for (i=0; i<10; i++)
{
for (j=0; j<50; j++)
{
WriteDebugLog(str);
}

}
return 0;
}
void WriteDebugLog(char *str)
{
char buf[2048]={0};
char logFileName[50]={0};
//long MAXLEN = 50*1024*1024;//50MB
int iMax = 1024;//1K
time_t timep;
FILE *fp = NULL;
struct tm *p;
time(&timep);
p = localtime(&timep);
memset(buf,0,sizeof(buf));
sprintf(buf,"[%d-%d-%d %d:%d:%d][DEBUG]",(1900+p->tm_year),(1+p->tm_mon), p->tm_mday,p->tm_hour, p->tm_min, p->tm_sec); //星期p->tm_wday
strcat(buf,str);
strcat(buf," ");
strcpy(logFileName,LOGFILE);
int len = strlen(logFileName);
logFileName[len-1] = Ɔ'+g_Count;
fp = fopen(logFileName,"r");
if(fp==NULL)
{
fp = fopen(logFileName,"w+");
}
else
{
fseek(fp,0,2);//SEEK_END值為2
if( ftell(fp) >= iMax)
{
fclose(fp);

if (g_Count >= 9)
{
logFileName[len-1] = Ɔ'
g_Count=0;
}
else
{
g_Count++;
logFileName[len-1] = Ɔ'+g_Count;
// printf(" %c",Ɔ'+g_Count);
}
fp = fopen(logFileName,"w+");
}
else
{
fclose(fp);
fp = fopen(logFileName,"a");
}
}
fwrite(buf,1,strlen(buf),fp);
fclose(fp);
}

G. C語言編寫好代碼後,怎麼編譯,最後生成可執行文件

材料/工具:vc6.0

1、打開c語言編輯工具,在工具中寫入程序的源代碼。

H. 如何實現log4cxx日誌輸出方式

Log4cxx是開放源代碼項目Apache Logging Service的子項目之一,用於為C++程序提供日誌功能,以便開發者對目標程序進行調試
和審計。本文對log4cxx的使用及配置進行介紹,並給出一個可以快速開始的實例。最後,針對日誌服務給出一些實踐方面的建議。
1. 介紹
Log4cxx是開放源代碼項目Apache Logging Service的子項目之一,是Java社區著名的log4j的c++移植版,用於為C++程序提供日誌
功能,以便開發者對目標程序進行調試和審計。
有關log4cxx的更多信息可以從Apache Loggin Service的網站http://logging.apache.org獲得。當前的穩定版本為0.9.7,本文內
容及示例代碼都是基於此版本。此外,示例代碼的編譯環境為Windows環境中的Microsoft Visual C++ .Net 2003。
本文的示例代碼可以在此下載,其中也包含了預編譯好的log4cxx的庫文件。
2. 集成log4cxx到IDE
要使用log4cxx,首先需要將其集成到你的項目開發環境中。以下針對Windows環境中的Microsoft Visual C++ .Net 2003進行說明
,其他環境的配置信息請參考官方文檔。
要讓log4cxx為你工作,通常情況下需要如下幾個步驟:
l 獲取軟體包:得到log4xx的源代碼;
l 編譯:構建庫文件;
l 項目環境設置:加入log4cxx支持。
2.1 獲取軟體包
請從官方網站獲得合適的版本。也可以從下面這個鏈接中直接獲取(直接的鏈接地址可能不會永遠有效):
http://mirror.vmmatrix.net/apache/logging/log4cxx/log4cxx-0.9.7.tar.gz
下載完成後解壓縮到合適的目錄中,因為我們在下一步中需要使用軟體包,包括編譯和復制必要的文件。
2.2 編譯
原始發行包中不含編譯後的代碼,這個工作需要我們自己來做。打開你的IDE,並載入以下目錄中的工程:
l Msvc\static:該工程產生log4cxx的靜態鏈接庫(lib4cxx.lib和lib4cxxs.lib);
l Msvc\dll:該工程產生log4cxx的動態鏈接庫(lib4cxx.dll)。
通常情況下,工程都可以順利編譯通過。查看輸出目錄,把這些生成的庫文件找出來,以便在下一步驟中使用。
2.3 項目環境設置
請先在IDE中打開一個需要加入日誌功能的工程,或者出於實驗目的,新建一個工程,以便對其進行設置。
首先需要設置log4cxx的include文件。這些文件位於log4cxx軟體包的include\log4cxx目錄內。請查看你的VC++ IDE中「工具->選
項->項目->VC++目錄->包含文件」所列出的內容,以便確定你以何種方式加入這些include文件:
l 將include\log4cxx直接拷貝到已定義的包含文件目錄中。如果將log4cxx看作是一項系統服務的話,這樣做是胡合乎情理
的,因為你可以採用標准庫的方式使用它,例如:#include <log4cxx/logger.h>
l 增加一個包含路徑,以指向位於IDE外部的某一文件目錄。可以簡單的指向在2.1中解壓縮後形成的log4cxx軟體包目錄。
下一步需要對2.2節產生的log4cxx庫進行設置。這取決於你使用該庫的方式:靜態鏈接或者動態鏈接。
l 靜態鏈接情況下需要做如下工作:為預編譯器定義LOG4CXX_STATIC宏,設置位置為「項目->屬性->配置屬性->C/C++->預
處理器->預處理器定義」;為鏈接器指定依賴的庫lib4cxxs.lib和Ws2_32.lib,設置位置為「項目->屬性->配置屬性->鏈接器->輸
入->附加依賴項」。
l 動態鏈接情況下只需要為鏈接器指定依賴的庫lib4cxxs.lib即可,設置方式同上。

3. 示例代碼
本節展示了一個最簡單的log4cxx示例,以便你可以快速的了解它。
該示例在功能上創建了一個日誌服務,該日誌可通過配置文件進行必要控制,並可以同時向文件和控制台輸出信息。
在實現上,我們採用了一個簡單的控制台程序,並使用動態鏈接庫的方式使用log4cxx。
要實現這個目標,請按如下步驟進行:
1)創建一個名為logdemo的空白win32控制台工程,並按照2.3節所述內容對其進行設置。注意,這里我們使用動態連介面的方式。
2)在logdemo.cpp中加入實現日誌功能的代碼。完成後的代碼清單如下:
#include "stdafx.h"
#include <log4cxx/logger.h>
#include <log4cxx/propertyconfigurator.h>

using namespace log4cxx;

int _tmain(int argc, _TCHAR* argv[])
{
//載入log4cxx的配置文件,這里使用了屬性文件
PropertyConfigurator::configure("log4cxx.properties");

//獲得一個Logger,這里使用了RootLogger
LoggerPtr rootLogger = Logger::getRootLogger();

//發出INFO級別的輸出請求
LOG4CXX_INFO(rootLogger, _T("它的確工作了"));
//rootLogger->info(_T("它的確工作了")); //與上面那句話功能相當

return 0;
}

以Debug方式編譯工程,調試程序直到成功為止。
3)新建一個文本文件,命名為log4cxx.properties,並鍵入如下內容:
# 設置root logger為DEBUG級別,使用了ca和fa兩個Appender
log4j.rootLogger=DEBUG, ca, fa

4)復制log4cxx.dll到輸出目錄。在動態鏈接方式下,應用程序需要能夠找到這個庫文件。
5)運行生成的logdemo.exe文件,查看一下運行結果,看看我們工作有沒有取得成效。如果一切順利,無論是在控制台還是在輸出
文件中,都應該能看到類似下面那樣的輸出內容:
2006-06-02 16:09:50,609 [2528] INFO root - 它的確工作了

4. 體系結構
4.1 核心類
Log4cxx有三個關鍵組件,它們是loggers, appenders和layouts。
Logger是log4cxx的核心類,只要執行日誌操作;looger有層次結構,最頂層為RootLogger;logger是有級別的。每個logger可以附
加多個Appender。Appender代表了日誌輸出的目標,如輸出到文件、控制台等等。對於每一種appender,都可以通過layout進行格
式設置。
這三類組件用示意圖表示如下(不代表類關系):
(TODO:在此對三種組件分別進行說明)
4.2 配置類
此外在使用中還會用到的類有BasicConfigurator、PropertyConfigurator和DOMConfigurator等,用於對log4cxx進行配置。其中:
BasicConfigurator提供了一種簡單配置,包括使用ConsoleAppder作為root appender和PatternLayout作為預設布局。
PropertyConfigurator使用properties文件作為配置方式。
DOMConfigurator則使用properties文件作為配置方式。
(TODO:在此對配置內容進行說明)
5. 實踐指導
在項目中是否使用日誌,以及如何使用日誌,對開發者來說都是一個需要做出的技術選擇,這通常會牽扯到系統的性能,使用日誌
的目的等問題。我們使用日誌的方式,有些是這個行業積累了多年的經驗,有些則純粹關乎個人的喜好。
1)何時使用日誌
通常情況下,日誌的作用在於調試和審計,如果你的項目對此有特殊需求,即可考慮使用日誌。
對於調試,通常用於IDE調試器無法達到的地方。一些常見的場景包括:
分布式組件的調試。在伺服器端的組件,需要通過客戶端的調用來驗證其工作是否正確,此時利用日誌的輸出作為輔助工具對錯誤
進行診斷。
鏈接庫調試。在無法跟蹤進外部庫中的情況下,這種方法非常有效。
生產環境下的調試。生產環境通常是指產品在客戶處處於正式運行的狀態,在出現問題時,開發者常常不在現場,藉助日誌的輸出
進行錯誤判斷就是一個非常有效的手段。
對於審計應用,則需要視特定的情況而定,程序級的記錄能力,無疑可以作為業務級審計手段的有效補充。
無論是在哪種場景下,log4cxx都是可以勝任工作的,這取決於它的靈活的配置能力及多種類型的輸出方式。
2)性能問題
關閉日誌,通過配置文件設置日誌的關閉和打開
使用宏代替logger的輸出命令
選擇性輸出日誌。建立logger的層次結構,根據級別選擇性輸出
輸出目標。盡可能減少輸出目標
選擇合適的輸出格式。使用SimpleLayout將達到與std::cout相當的速度。
3)其它
使用類的全限定名對logger命名
6. 結論
Log4cxx具有的一些顯著特性使得C++者可以將其放入自己的工具箱中,這些特性包括靈活的配置能力,多種輸出手段,豐富的格式
控制,出色的性能。如果在你的開發中需要藉助於日誌進行調試和審計,你也許需要log4cxx。最後,重要的一點是,如你所見,
log4cxx的使用是如此的簡單。

I. log4cplus fileappender怎麼實現追加寫日誌

在官方網站下載最新log4cplus源碼,通過以下幾步安裝:
1、解壓源碼
tar xvzf log4cplus-x.x.x.tar.gz
2、進入解壓目錄安裝

cd log4cplus-x.x.x
2.1、配置編譯選項,可以configure跟--help參數查看所有配置選項幫助
./configure

2.2、編譯並安裝
make
make install
這里我採用預設安裝路徑:/usr/local,可以通過--prefix=/install/path指定安裝路徑。

二、log4cplus內容簡介與配置文件使用
log4cplus內容介紹
1. Logger對象
Logger對象具有層次結構,按名稱區分,如下代碼:

在log4cplus中logger的存儲機制中,所有logger都通過一個層次化的結構來組織的,有一個Root級別的logger,可以通過以下方法獲取:
Logger root = Logger::getRoot();
用戶定義的logger都有一個名字與之對應,比如:
Logger test = Logger::getInstance("test");
可以定義該logger的子logger:
Logger subTest = Logger::getInstance("test.subtest");
注意Root級別的logger只有通過getRoot方法獲取,Logger::getInstance("root")獲得的是它的子對象而已。有了這些具有父子關系的logger之後可分別設置其LogLevel,比如:
root.setLogLevel( ... );
Test.setLogLevel( ... );
subTest.setLogLevel( ... );
2. 優先順序
log4cplus優先順序有低到高:
NOT_SET_LOG_LEVEL :接受預設的LogLevel,如果有父logger則繼承它的LogLevel
ALL_LOG_LEVEL :開放所有log信息輸出
TRACE_LOG_LEVEL :開放trace信息輸出(即ALL_LOG_LEVEL)
DEBUG_LOG_LEVEL :開放debug信息輸出
INFO_LOG_LEVEL :開放info信息輸出
WARN_LOG_LEVEL :開放warning信息輸出
ERROR_LOG_LEVEL :開放error信息輸出
FATAL_LOG_LEVEL :開放fatal信息輸出
OFF_LOG_LEVEL :關閉所有log信息輸出

J. C語言源程序文件經過編譯連接之後生成一個後綴為_____的文件。

如果只生成一個文件,那麼這個題目答案是B。編譯(compile)後生成目標文件,後綴:.obj。也就是機器碼。

然後鏈接器(Linker) 連接生成可執行文件,後綴:.exe。最後運行命令(go),直接運行.exe文件。

(10)編譯log4c源碼擴展閱讀:

簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。

一個現代編譯器的主要工作流程:源代碼(source code) →預處理器(preprocessor) →編譯器(compiler) →目標代碼(object code) →鏈接器(Linker) → 可執行程序(executables)

高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。

編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。

源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言。

而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。

最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。

閱讀全文

與編譯log4c源碼相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:577
python員工信息登記表 瀏覽:375
高中美術pdf 瀏覽:158
java實現排列 瀏覽:511
javavector的用法 瀏覽:979
osi實現加密的三層 瀏覽:230
大眾寶來原廠中控如何安裝app 瀏覽:911
linux內核根文件系統 瀏覽:240
3d的命令面板不見了 瀏覽:523
武漢理工大學伺服器ip地址 瀏覽:146
亞馬遜雲伺服器登錄 瀏覽:521
安卓手機如何進行文件處理 瀏覽:70
mysql執行系統命令 瀏覽:928
php支持curlhttps 瀏覽:142
新預演算法責任 瀏覽:443
伺服器如何處理5萬人同時在線 瀏覽:249
哈夫曼編碼數據壓縮 瀏覽:424
鎖定伺服器是什麼意思 瀏覽:383
場景檢測演算法 瀏覽:616
解壓手機軟體觸屏 瀏覽:348