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、可能是文件损坏。