Usando - (archivos -) comandos gcc

Oct 10 2020

Al compilar una DLL, me he encontrado con muchos undefined referenceerrores, que creo que pueden ser causados ​​por dependencias circulares entre bibliotecas. Para solucionar este problema, he intentado utilizar las opciones de -(archivos -)y --start-grouparchivos --end-group:

gcc -Wall -shared Pipeline.cpp -I"C:/Python38/include" -I"C:/Program Files/Pleora Technologies Inc/eBUS SDK/Includes" -I "C:/Python38/Lib/site-packages/numpy/core/include" -L"C:\Users\fmkz78\AppData\Local\Continuum\anaconda3\libs" -L"C:/Program Files/Pleora Technologies Inc/eBUS SDK/Libraries" -o lib.dll -( -lEbInstallerLib64 -lEbTransportLayerLib64 -lEbUtilsLib64 -lPtConvertersLib64 -lPtUtilsLib64 -lPvAppUtils64 -lPvBase64 -lPvBuffer64 -lPvCameraBridge64 -lPvDevice64 -lPvDSSource64 -lPvGenICam64 -lPvGUI64_VC10 -lPvGUI64_VC11 -lPvGUI64_VC12 -lPvGUI64_VC14 -lPvPersistence64 -lPvSerial64 -lPvStream64 -lPvSystem64 -lPvTransmitter64 -lPvVirtualDevice64 -lSimpleImagingLib64 -lpython37 -)

Hacer esto da como resultado el error gcc: error: unrecognized cpmmand line option '-('y nuevamente para la opción de cierre. Tengo el mismo problema al usar las opciones de grupo de inicio y finalización. Estoy ejecutando Windows 10 usando el compilador MinGW gcc.

¿Los estoy usando en el lugar equivocado o hay algún problema en mi configuración?

Respuestas

AsteroidsWithWings Oct 09 2020 at 23:50

--start-groupy--end-group (y las formas cortas, -(y -)) son opciones de enlace .

Deberá -Wlusarlos desde el controlador del compilador gcc, para que los pase al vinculador en lugar de intentar comprenderlos por sí mismo (lo cual no puede, porque no tiene tales conmutadores).

Entonces:

-Wl,--start-group
-Wl,--end-group
-Wl,-(
-Wl,-)

estan bien.

Pero estos:

--start-group
--end-group
-(
-)

no son.

Por cierto, probablemente quieras g++, no gcc, a menos que estés omitiendo deliberadamente la biblioteca estándar de C ++ (y otros tiempos de ejecución relevantes) de tu compilación.