读书人

linux上用xlC编译C++报错

发布时间: 2013-02-04 10:50:21 作者: rapoo

linux下用xlC编译C++报错
a.cpp


#include <string>
#include <iostream>
#include <map>
#include <string>
#include "test.h"
using namespace std;
#define GETS(msg) printf("%s\n",msg);
struct Student{
char name[30];
int age;
char sex[4];

}stu1,stu2={"zhangsan",22,"boy"};
FILE *p_fp;
char c_str[1000];
char c_Str[10];
map<string, int> my_Map;
char *ps[3];
char *pd[3]={"username","userpass","database"};

int k=0;
int main(int argc,char *argv[])
{
cout<<"sdfds";
//my_Map.insert(make_pair<string,int>("d",4));
//cout<<"哈哈"<<endl;
sun(1,4);
GETS("你好");
if ((p_fp=fopen(argv[1],"r"))==NULL)
printf("打开配置文件%s失败!\n",argv[1]);

else{
while (!feof(p_fp))
{

if (fgets(c_str, 25, p_fp) != NULL){
char *p;
p=strstr(c_str,"=");
printf("c_str%s\n",p);
ps[k]=p;
k=k+1;
}

}
}
for(int i=0;i<3;i++){
printf("%s=%s\n",pd[i],ps[i]);
}
printf("My name is : %s\n","山炮");
printf("dd=%d\n",d);
CServices cs1;
cs1.add();
return 0;
}
void CServices::add(){
printf("dddddddddddd:%s\n","aaaaaaaaaaaaaaaa");
printf("结构体:%d\n",stu2.age);
}


test.h


#ifndef test_h
#define test_h
//#include <math>
#include <string>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define BBB 80
#define DDD 60
#ifdef AAA
using namespace std;
int i=3;
#else
int i;
#endif
int d=14;
#define demo(H) if(2>3)\
{\
d=15;\
printf("error : %s\n");\
}\
else\
d=18;
int c=0;
void sun(int a,int b)
{
printf("a+b=%d\n",a+b);
demo("error");
}

#endif
class CServices
{
public:
CServices(){printf("构造函数\n");};
void add();

};


makefile



#################################C++程序#########################
CPP = xlC_r7 -q64 -bh:5 -g
CFLAGS = -c -o
LFLAGS = $(PLATFORM_DEF) -D_REENTRANT -D_THREAD_SAFE -g -w -o
LIB = -L$(PATH_LIB)
PATH_TEST =/ngbss/mddms/interface/other/SRBI/test

OBJ_TEST =\
$(PATH_TEST)/a.o\



exec_test:
@$(CPP) $(OBJ_TEST)

$(PATH_TEST)/a.o:
@$(CPP) $(CFLAGS) $@ $(PATH_TEST)/a.cpp



test:$(OBJ_TEST) exec_test
@cc a.o -o a
@a




make test


[/ngbss/mddms/interface/other/SRBI/test]$make test
ld: 0711-317 ERROR: Undefined symbol: .clear__Q2_3std8ios_baseFib
ld: 0711-317 ERROR: Undefined symbol: __dl__FPv
ld: 0711-317 ERROR: Undefined symbol: .uncaught_exception__3stdFv


ld: 0711-317 ERROR: Undefined symbol: .__dt__Q2_3std7_LockitFv
ld: 0711-317 ERROR: Undefined symbol: .__dl__FPv
ld: 0711-317 ERROR: Undefined symbol: .__ct__Q2_3std7_LockitFi
ld: 0711-317 ERROR: Undefined symbol: .__ReThrowV6
ld: 0711-317 ERROR: Undefined symbol: .__setUncaughtExceptionFlag__3stdFb
ld: 0711-317 ERROR: Undefined symbol: .__CleanupCatchV6a
ld: 0711-317 ERROR: Undefined symbol: cout__3std
ld: 0711-317 ERROR: Undefined symbol: .unexpected__3stdFv
ld: 0711-317 ERROR: Undefined symbol: .terminate__3stdFv
ld: 0711-317 ERROR: Undefined symbol: .__ThrowV6
ld: 0711-317 ERROR: Undefined symbol: ._Toupper
ld: 0711-317 ERROR: Undefined symbol: ._Tolower
ld: 0711-317 ERROR: Undefined symbol: ._Getctype__FPCc
ld: 0711-317 ERROR: Undefined symbol: _Cltab__Q2_3std5ctypeXTc_
ld: 0711-317 ERROR: Undefined symbol: .__dt__Q2_3std8_LocinfoFv
ld: 0711-317 ERROR: Undefined symbol: .__ct__Q2_3std8_LocinfoFPCci
ld: 0711-317 ERROR: Undefined symbol: .__nw__FUl
ld: 0711-317 ERROR: Undefined symbol: _Id_cnt__Q3_3std6locale2id
ld: 0711-317 ERROR: Undefined symbol: id__Q2_3std5ctypeXTc_
ld: 0711-317 ERROR: Undefined symbol: ._Getfacet__Q2_3std6localeCFUl
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: The error code from the last command is 8.

用到string CString map cout cin等等是总是报这样的错误,请教各位是为什么 c++ linux string
[解决办法]

引用:
并非第一次,之前都能通过的,而是我用到CString,string,map,cout,cin这样的东西的时候会报错


std c++的库没有被链接进来。

读书人网 >C++

热点推荐