aix如何編譯c
㈠ AIX 下makefile 編譯問題
環境變數沒有定義好。
echo $cc
看看定義了沒。
也就是你的編譯器。
㈡ 新手入門:AIX下如何用命令行編譯並執行一個C程序GCC和CC的區別是什麼
謝謝! 明天我去試一下。另外,在AIX下我輸入:gcc -v 想查看GCC版本號,提示GCC不存在,但是輸入:cc -v 則提示IBM XLC的版本信息,不知道這個是什麼原因 ?
內存情況比較簡單
MEMORYSTATUSEX mstx;
mstx.dwLength = sizeof (mstx);
GlobalMemoryStatusEx( &mstx );
int iMemeryUsePercentage = mstx.dwMemoryLoad;
int iTotalPhysMB = mstx.ullTotalPhys/1024/1024;
int iAvailPhysMB = mstx.ullAvailPhys/1024/1024;
int iTotalPageFileMB = mstx.ullTotalPageFile/1024/1024;
int iAvailPageFileMB = mstx.ullAvailPageFile/1024/1024;
char LogBuff[128];
memset( LogBuff , 0 , 128 );
sprintf( LogBuff , "MemAvailPct=%d%% Phys=%d/%d PageFile=%d/%d" , 100 - iMemeryUsePercentage , iAvailPhysMB , iTotalPhysMB , iAvailPageFileMB , iTotalPageFileMB );
printf("%s\n",LogBuff);
以上程序分別輸出可用百分比,可以用物理內存/總物理內存,可用頁面文件/總頁面文件
獲取CPU的比較復雜,我這邊只有獲取單個進程CPU佔用的方法,不過可以遍歷所有進程分別獲取再求和就是整個cpu佔用率了。
#include <stdio.h>
#include <Windows.h>
typedef long long int64_t;
typedef unsigned long long uint64_t;
/// 時間轉換
static uint64_t file_time_2_utc(const FILETIME* ftime)
{
㈣ aix系統編譯make
換gmake試一下
gmake是GNU Make的縮寫。 linux系統環境下的make就是GNU Make,之所以有gmake,是因為在別的平台上,make一般被佔用,GNU make只好叫gmake了。 比如在安裝二進制文件進行編譯時要使用make命令,但如果在Solaris或其他非GNU系統中運行,必須使用GNU make,而不是使用系統自帶的make版本,這時要用gmake代替make進行編譯
㈤ AIX上面C++編譯報錯:0711-224 plicate
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<fstream>
usingnamespacestd;
intmain(){
stringcommand("./a.sh");
command+="aaa.lzo";
FILE*f=popen(command.c_str(),"r");
charbuf[1024];
fgets(buf,1024,f);
cout<<buf<<endl;
pclose(f);
return0;
}
㈥ AIX下xlc編譯C程序報警,Duplicate symbol,求助
plicate symbol是一種常見的鏈接錯誤,不像編譯錯誤那樣可以直接定位到問題的所在。但是經過一段時間的總結,發現這種錯誤總是有一些規律可以找的。
例如,我們有如下的最簡單的兩個類代碼:
// ClassA.h
#import <Foundation/Foundation.h>
@interface ClassA : NSObject
@end
// ClassA.m
#import "ClassA.h"
@implementation ClassA
@end
// ClassB.h
#import <Foundation/Foundation.h>
@interface ClassB : NSObject
@end
// ClassB.m
#import "ClassB.h」
@implementation ClassB
@end
編譯後出現的錯誤信息如下:
plicate symbol _OBJC_METACLASS_$_ClassA in:
/Users/dajie/Library/Developer/Xcode/DerivedData/linkTest-cpjaaatiyqpvxcbzfzpklcbqrgqg/Build/Intermediates/linkTest.build/Debug-iphonesimulator/linkTest.build/Objects-normal/i386/ClassA.o
/Users/dajie/Library/Developer/Xcode/DerivedData/linkTest-cpjaaatiyqpvxcbzfzpklcbqrgqg/Build/Intermediates/linkTest.build/Debug-iphonesimulator/linkTest.build/Objects-normal/i386/ClassB.o
plicate symbol _OBJC_CLASS_$_ClassA in: /Users/dajie/Library/Developer/Xcode/DerivedData/linkTest-cpjaaatiyqpvxcbzfzpklcbqrgqg/Build/Intermediates/linkTest.build/Debug-iphonesimulator/linkTest.build/Objects-normal/i386/ClassA.o
/Users/dajie/Library/Developer/Xcode/DerivedData/linkTest-cpjaaatiyqpvxcbzfzpklcbqrgqg/Build/Intermediates/linkTest.build/Debug-iphonesimulator/linkTest.build/Objects-normal/i386/ClassB.old: 2
plicate symbols for architecture i386clang:
error: linker command failed with exit code 1 (use -v to see invocation)
從上面出現問題的地方,我們應該能推測出是ClassA這個類出了問題。如果這個類是我們自己寫的,就容易辦一些。
可以考慮以下原因:
1.引入頭文件時,由於疏忽,誤引入.m文件。這種一般仔細檢查一下出現問題的類的源文件就能發現。
例:ClassB.m 文件修改成下面這樣
#import "ClassB.h>"
#import "ClassA.m」 // 這句話有問題
@implementation ClassB
@end
2.同一個類,實現兩次,即有兩個@implementation 。這種一般會有一個警告,也比較容易發現。
例:ClassB.m文件修改成下面這樣:
// ClassB.m
#import "ClassB.h」
@implementation ClassB
@end
@implementation ClassA
@end
3.工程文件,同一個類文件被引入了兩次,引起這種錯誤的原因大概有兩種:一是多人協作開發時,導致project文件合並沖突;二是同名文件不在同一目錄下,添加到工程時造成重復添加。 這種一般在文件視圖,用名字過濾器檢查一下就發現了。
4. Targets的Build Phase設置項里,查看Complie Sources這一項,看看出現問題的類是不是有重復的,用文件名過濾也比較容易發現。這種問題一般也是多人協作開發時,project文件沖突導致的。發現這種問題,只要刪除就可以了。不過在我解決問題過程中,刪除其中一個文件時,重復文件會自動全部刪除,所以還需要單獨添加一下。
5.如果我們的工程中引用了第三方的庫,而恰好第三方的庫裡面有一個ClassA,也會出現這種問題。如果不能修改第三方的庫代碼,只能修改我信自己的代碼了。
㈦ 如何在AIX系統下編譯c或c++源文件,具體說明一下。謝謝各位高手。
如果你有myprogram.cpp文件,那麼使用xlC myprogram.cpp 就可以編譯了,默認生成輸出文件名為a.out,
如果要指定輸出文件,可以使用xlC myprogram.cpp -o myprogram,這樣就可以生成名字為myprogram的文件
㈧ AIX上面有默認的C/C++編譯器嗎
Test:/#lslpp -L | grep xlC
xlC.aix50.rte 6.0.0.13 C F C Set ++ Runtime for AIX 5.0
xlC.cpp 6.0.0.0 C F C for AIX Preprocessor
xlC.msg.en_US.cpp 6.0.0.0 C F C for AIX Preprocessor
xlC.msg.en_US.rte 6.0.0.0 C F C Set ++ Runtime
xlC.rte 6.0.0.0 C F C Set ++ Runtime
# lslpp -l | grep vac
vac.C 6.0.0.0 COMMITTED C for AIX Compiler
vac.C.readme.ibm 6.0.0.0 COMMITTED C for AIX iFOR/LS Information
vac.html.en_US.C 6.0.0.0 COMMITTED C for AIX Compiler
vac.lic 6.0.0.0 COMMITTED C for AIX Licence Files
vac.ndi 6.0.0.0 COMMITTED C for AIX Non-Default
vac.pdf.en_US.C 6.0.0.0 COMMITTED C for AIX Documentation
vacpp.cmp.aix50.lib 6.0.0.0 COMMITTED VisualAge C++ Libraries for
vacpp.cmp.aix50.tools 6.0.0.0 COMMITTED VisualAge C++ Tools for AIX
vacpp.cmp.core 6.0.0.0 COMMITTED VisualAge C++ Compiler
vacpp.cmp.include 6.0.0.0 COMMITTED VisualAge C++ Compiler Include
vacpp.cmp.lib 6.0.0.0 COMMITTED VisualAge C++ Libraries
vacpp.cmp.rte 6.0.0.0 COMMITTED VisualAge C++ Compiler
vacpp.cmp.tools 6.0.0.0 COMMITTED VisualAge C++ Tools
vacpp.lic 6.0.0.0 COMMITTED VisualAge C++ Licence Files
vacpp.memdbg.aix50.lib 6.0.0.0 COMMITTED VA C++ User Heap/Memory Debug
vacpp.memdbg.aix50.rte 6.0.0.0 COMMITTED VA C++ User Heap/Memory Debug
vacpp.memdbg.lib 6.0.0.0 COMMITTED VisualAge C++ User Heap and
vacpp.memdbg.rte 6.0.0.0 COMMITTED VisualAge C++ User Heap and
vacpp.ndi 6.0.0.0 COMMITTED VisualAge C++ Non-Default
vacpp.pdf.common 6.0.0.0 COMMITTED VisualAge C++ Documentation
vacpp.pdf.en_US 6.0.0.0 COMMITTED VisualAge C++ Documentation
vacpp.samples.ansicl 6.0.0.0 COMMITTED ANSI CLass Library Samples
vac.C 6.0.0.0 COMMITTED C for AIX Compiler
vacpp.cmp.core 6.0.0.0 COMMITTED VisualAge C++ Compiler
㈨ 新手入門:AIX下如何用命令行編譯並執行一個C程序GCC和CC的區別是什麼
謝謝!
明天我去試一下。另外,在AIX下我輸入:gcc
-v
想查看GCC版本號,提示GCC不存在,但是輸入:cc
-v
則提示IBM
XLC的版本信息,不知道這個是什麼原因
?閣下說得沒錯,果然可以編譯。
不過我還是不太明白
gcc
/
cc
/
xlc
/
c89
他們之間的概念是一個什麼樣的區別,能再說一下嗎
?謝謝!
㈩ 工行提供了一個 aix下面編譯的c語言寫的so文件,讓我在64為linux下調用,
1、ELF(Executable and Linkable Format)文件格式是各種Unix系統中最為常用的格式。
2、可能是你讀的格式不正確。
3、可能是文件損壞。