undefined reference to `__ctype_b'


 
Thread Tools Search this Thread
Top Forums Programming undefined reference to `__ctype_b'
# 1  
Old 10-08-2008
undefined reference to `__ctype_b'

when i compile my program, i meet the following error:
...
undefined reference to `__ctype_b'
...

anybody knows which shared library should be linked during make?

thanks a lot!
# 2  
Old 10-08-2008
The name is mangled. I dunno. What headers outside of the standard C library headers are in the file? ie NOT <stdio.h> <string.h> etc.
# 3  
Old 10-08-2008
I just link 3rd part archive file (xerces-c.a) to make my own program.

the error looks like:

./lib_2_8_64bit/libxerces-c.a(XMLString.o): In function `xercesc_2_8::XMLString::trim(char*)':
XMLString.cpp(.text+0xa85): undefined reference to `__ctype_b'
XMLString.cpp(.text+0xab0): undefined reference to `__ctype_b'
collect2: ld returned 1 exit status
make: *** [all] Error 1


however, if i link shared library (xerces-c.so) instead of .a file, then it compiles.

so any tips or tricks when linking the static library?
# 4  
Old 10-08-2008
The .a file may still have external symbols that are resolved in the shared library.
Are you trying a static link?

Code:
nm xerces-c.a | grep ctype_b

will list your symbol. I would guess that you will see ctype_b listed as external, meaning it has to be resolved somewhere else. Do you have any other xerces archives you can grep through?
# 5  
Old 10-08-2008
Another thought - you may not be aware that the order of libraries linked against is important. Try moving the .a file to the first element in the -l list.

Also, you may need to put something like the std c++ library as the last in that list - in other words some standard shared libraries may need to be parsed for symbols more than once.

What is happening: the .a file is introducing symbols that were not in the original object file, these extern symbols were probably available earlier, but ld skipped over them because they were not needed at that time.
# 6  
Old 10-09-2008
thanks jim. your guess is right - ctype_b listed as external.

i tried to move link order according to your suggestion. but it still does not work.
# 7  
Old 10-09-2008
you can compare the symbols of both .so and .a .... check if the symbol is available in .so. If not then it may be taking it from some other .so
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

undefined reference help

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: The problem is a function which i typed although it kept saying that it is a undefined reference still. other... (1 Reply)
Discussion started by: mgyeah
1 Replies

2. Homework & Coursework Questions

undefined reference help

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: i know when undefined reference shows up the program is saying it is not link to that function but the problem... (1 Reply)
Discussion started by: mgyeah
1 Replies

3. Programming

undefined reference to `pthread_create'

Hi guys. H was learning posix threads in C with anjuta IDE. it gives me undefined reference to `pthread_create' I know i should compile it like: gcc -lpthread main.c how should i import this configuration in anjuta so i can compile inside it? (2 Replies)
Discussion started by: majid.merkava
2 Replies

4. Programming

undefined reference to pthread_create

I try to compile a sample c code in fedora eclipse 3.2 as managed makefile using pthread library,it shows some error on pthread functions.Error is of undefined reference to pthread.Anybody guide me to solve this problem. Thanking you (1 Reply)
Discussion started by: sujith4u87
1 Replies

5. Programming

undefined reference to 'function'

Hi, i want to compile a code where fortran calls c . First I compiled C module ,it has pass by gcc. However, after generating .o file. I compiled C and fortran files together by intel fortran and it failed " undefined reference to 'vicerror'". vicerror is a function. I do not know why. (1 Reply)
Discussion started by: austinhsu
1 Replies

6. Programming

undefined reference to `__udivdi3@GCC_3.0'

While I made something, I get following message. --------------------------------------------- undefined reference to `__udivdi3@GCC_3.0' --------------------------------------------- Is '__udivdi3@GCC_3.0' a name of function ? if not, what does '@GCC_3.0' mean ? I want to make and link a... (1 Reply)
Discussion started by: hcliff
1 Replies

7. Programming

undefined reference to `pthread_create'

Hi I wanted to learn communication between threads and I used a simple example but I faced with this error while I have a sofware that uses this functions without any problem so would you please help me to know the reason thanks for your help and great favor. #include <pthread.h>... (2 Replies)
Discussion started by: netman
2 Replies

8. Programming

about undefined reference for 'sinf'

I m writting code in c using another library(parapin) and making Makefile .but there is a error like undefined reference to `sinf' undefined reference to `ceilf' although i have added math.h library in my code . I tried to run simple programme using math.h and it run.but in making Makefile it... (2 Replies)
Discussion started by: bharat suthar
2 Replies

9. Programming

Undefined reference to Error

Hello, plz help me out with this error, i am getting this error when i compile my code with gcc. /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o(.text+0x18): In function `_start': : undefined reference to `main' /tmp/cciLxqdV.o(.text+0x3c): In function `HandleUserTransaction()':... (2 Replies)
Discussion started by: svh
2 Replies
Login or Register to Ask a Question