Incrustar todas las referencias externas al crear una biblioteca estática
Necesito crear una biblioteca de envoltorio para el código C que envuelve mi biblioteca de C ++. ¿Hay una manera de crear esa biblioteca de envoltura de tal manera que el usuario solo necesite vincular esta biblioteca de envoltura y no tenga que incluir todas las bibliotecas (C ++) en la línea de comandos del vinculador?
La estructura de mi proyecto de prueba se ve así:
.
├── lib
│ ├── cpp
│ │ ├── print.cc
│ │ └── print.h
│ ├── lib.cc
│ ├── lib.h
└── main.c
Main.c es una aplicación de ejemplo de C que usa mi biblioteca. Los archivos lib.h y lib.cc son la biblioteca de contenedor que contiene los enlaces en C. Mi biblioteca de C ++ reside en la subcarpeta cpp.
En este momento lo tengo funcionando usando la siguiente cadena de comandos:
cd lib
g++ -c lib.cc
ar rcs libib.a lib.o
cd ..
gcc -Ilib -Llib main.c -lib -lstdc++
Sin embargo, como puede ver, el paso del vinculador necesita que el usuario incluya las bibliotecas de C ++ utilizadas en mi biblioteca de C ++. En este caso, libstdc ++. So (o libstdc ++. A si se usa -static).
Me gustaría incluir todas las bibliotecas de C ++ en mi libib.a de manera que el usuario pueda simplemente usar el siguiente comando para compilar:
gcc -Ilib -Llib main.c -lib