Thread: Red Hat Linux GNU Link Question

  1. #1
    Registered User
    Join Date
    Feb 2002

    Red Hat Linux GNU Link Question

    I need to determine if what I am trying to do is even possible. I am not a c programmer by any stretch of the imagination. However, I have inherited this project because nobody else knows c here either (short straw). Hopefully one of you c gurus can help me stop beating my head against the wall...

    Our environment is Red Hat Linux 6.2 and Oracle. In the past, I have been able to create a c interface routine to CyberSource's credit card clearing SDK. To function in their environment, Oracle requires that it be a .so shared object. CyberSource provided both a .so and .a version of their routines as well as some good examples of how to do the compile and link. Using the .a version, I was able to create a usable .so using:

    gcc -c -O pcdcrcard.c
    ld -G -o pcdcrcard.o libics2.a -lc

    The libics2.a library is just under 800KB. My resulting .so is fairly close in size to that.

    Now I am trying to create a similar interface for the TeleCheck electronic check processing SDK. Unfortunately they only provide a .so file and absolutely no examples or documentation.

    When I try something similar to the CyberSource example:

    gcc -c -O pcdtelecheck.c
    ld -G -o pcdtelecheck.o -lc

    I get a .so out, but it is only the same size as a statically linked executable. The is almost 700KB. My new .so is only 28K. That leads me to believe that I don't have a true .so file.

    So, my question is: Is it possible to link an existing .so with a new c program, producing a new usable .so that contains everything from the original .so?

    Any help would be greatly appreciated.

  2. #2
    Registered User alex's Avatar
    Join Date
    Sep 2001
    If is installed correctly on the system where you are using your own shared object (, then it should all work fine:
    As soon as calls any of the functions from, it should automatically bind this SO, if the is in /lib, or any of the directories specified in /etc/ If you need (or want) to install it somewhere else, you can set the environment variable LD_LIBRARY_PATH to include the directory you need before running the program that needs your SO, or you can add the option -rpath,/my/own/directory to the command line of ld.


    P.S. you can check whether reference correctly using "ldd"

  3. #3
    Registered User
    Join Date
    Feb 2002
    I'll give that a try.
    Thanks a million!

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. dual boot windows xp home and red hat 9
    By Boomba in forum Tech Board
    Replies: 0
    Last Post: 01-09-2004, 03:09 PM
  2. Red Hat linux 9 Installation CD images
    By nonUser in forum A Brief History of
    Replies: 4
    Last Post: 05-29-2003, 06:33 AM
  3. link list question
    By alokin in forum C Programming
    Replies: 3
    Last Post: 10-30-2002, 10:25 PM
  4. Linux and serial cable question
    By Hannwaas in forum A Brief History of
    Replies: 4
    Last Post: 04-18-2002, 07:04 PM
  5. Question about LINUX
    By River21 in forum A Brief History of
    Replies: 0
    Last Post: 09-17-2001, 06:39 PM