g++ with -frepo and shared objects...


 
Thread Tools Search this Thread
Top Forums Programming g++ with -frepo and shared objects...
# 1  
Old 05-06-2008
g++ with -frepo and shared objects...

G'day,

I have been working with a large application that makes extensive use of templates. When compiled under Unix (with g++), this sees some rather impressive bloat. I have been trying to make a temporary quick-fix by using the -frepo option, which results in dramatically smaller shared objects, but the executables no longer link. I suspect that collect2 is not being called when the -shared flag is used, which would be the cause of this. Here is a simple example I created:

template.h:
Code:
template <class T>
T tmax(T a, T b)
{
  return a > b ? a : b ;
}

test.h:
Code:
int calltmaxint(int i, int j);

test.cpp:
Code:
#include "template.h"
#include "test.h"

int calltmaxint(int i, int j)
{
  return tmax(i, j);
}

main.cpp:
Code:
#include <iostream>
using namespace std ;
#include "test.h"

int main(void)
{
  cout << calltmaxint(10, 15) << endl ;

  return 0;
}

The command line is then as follows:
Code:
$ g++ -c -frepo -fPIC test.cpp
$ g++ -shared test.o -o libtest.so
$ g++ -c -frepo main.cpp
$ g++ -L. -ltest main.o -o main
./libtest.so: undefined reference to `int tmax<int>(int, int)'
collect2: ld returned 1 exit status

I have attempted on Solaris 10 with g++ 3.6.4 and Debian stable with g++ 4.1.1-15 with the same result. I have not been able to find any answers with Google on this, so I am rather hoping someone here can enlighten me. Can I use -frepo with shared objects? If so, what am I doing wrong? If not, will I be able to use the -fexternal-templates option to reduce the size?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Shared objects -urgent please help me out

Hi All...... I have my tool in my one server lets say E1 and same tool I tried to install in E2 server so everything is fine but, while executing the my tool for example... $ ./batch At that time Im getting this following error. ./batch: error while loading shared libraries: libqabwvcd.so:... (3 Replies)
Discussion started by: ksrivani
3 Replies

2. Linux

Make file for shared objects

dear Experts, please help, actually i am trying to create a .so(shared object through make file through ld) i am not understaning how to proceed i have tried like through command like i can do it in 2 step like my progam :test2.c $gcc -fPIC -c test2.c $ld -shared -soname test2.so -o... (1 Reply)
Discussion started by: vin_pll
1 Replies

3. Programming

Creation and Accessing Shared Objects (.so)

Hi, I am looking for references about creating and accessing Shared Objects (.so) through C/C++ on Unix / Linux platforms. Is it possible and where can I find the info. Thanks Phil (1 Reply)
Discussion started by: phil nascimento
1 Replies

4. AIX

Wrong Shared objects getting loaded

I have two envoirmets(Envoirment A and Envoirment B) running on same server(AIX vesion 5.3).Both have different groups.I am facing a strange problem.Shared objects of one envoirment (Envoirment A)are getting loaded into the second(Envoirment B).So the servers that have dependency on shared objects... (2 Replies)
Discussion started by: nitin@tcs
2 Replies

5. UNIX for Advanced & Expert Users

debugging shared objects

Hi, i am trying to debug a binary which is using a shared lib. but i could not succeed in tracking the code flow in the classes defined in this library. i get: class MyClass <opaque> error i followed the instructions in the link below:... (0 Replies)
Discussion started by: yakari
0 Replies

6. UNIX for Advanced & Expert Users

Shared Objects

Hi. Does anyone know by how much a text size of an executable(on ibm) would grow if you link one shared object(library)? Is it a constant number or it depends on a .so that is linked? (3 Replies)
Discussion started by: Yura
3 Replies

7. Programming

Linking with shared objects

hi all ! Do I need all the shared objects to be present while compiling my code which has reference to a only one shared object, which in turn refers to another shared object. for example I want to compile example.c which refers to sample.so sample.so has refrence to anothersample.so do... (2 Replies)
Discussion started by: disclaimer
2 Replies

8. UNIX for Dummies Questions & Answers

Shared Objects

Hi Friends ! I have a library, say libxyz.a. To view all the object files in the archive, i issued the command : ar -t libxyz.a which displayed all the object files it contains. Now, I would like to know the functions in each object file. Is there any such command that displays... (3 Replies)
Discussion started by: mrgubbala
3 Replies

9. Programming

Shared memory and C++ Objects (cont)

I asked the next question in a former thread : Can I safely share objects that have virtual functions (i.e. have virtual function table pointers) between two processes ? Where will the pointers point to in each process ? The objects are supposed to reside in shared memory I received a... (6 Replies)
Discussion started by: Seeker
6 Replies

10. Programming

Runtime Linking shared Objects

I'm runtime linking (dlopen and dlsym) to a shared object (library) I've created and after a number of function calls into the library the program core dumps (Illegal operation). This only occurs during runtime linking. If I use the same library and dynamically link during compile time everything... (3 Replies)
Discussion started by: dneely
3 Replies
Login or Register to Ask a Question