1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 <2015> 2016 2017 2018 2019 2020 2021 2022 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 <2015> 2016 2017 2018 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Problems building on Cygwin |
From: | Mark Rivers <[email protected]> |
To: | "[email protected]" <[email protected]> |
Date: | Wed, 13 May 2015 22:01:03 +0000 |
Folks, I have into a problem I don’t understand when building some EPICS modules with recent versions of Cygwin. My version is currently 2.0.1 with gcc 4.8.3 $ more /proc/version CYGWIN_NT-6.1-WOW version 2.0.1(0.287/5/3) ([email protected]) (gcc version 4.8.3 20140522 (Fedora Cygwin 4.8.3-6) (GCC) ) 2015-04-30 18:13 This is the problem I get when building mca/mcaApp/CanberraSrc: $ make make -C O.cygwin-x86 -f ../Makefile TOP=../../.. \ T_A=cygwin-x86 install make[1]: Entering directory '/cygdrive/j/epics/devel/mca/mcaApp/CanberraSrc/O.cygwin-x86' g++ -o mcaCanberra.dll -shared -Wl,--out-implib,mcaCanberra.lib -L/cygdrive/j/epics/devel/mca/lib/cygwin-x86 -L/cygdrive/h/epics/base-3.14.1 2.5/lib/cygwin-x86 -L/cygdrive/j/epics/devel/asyn-4-26/lib/cygwin-x86 -m32 nmc_comm_subs_1.o nmc_comm_subs_2.o nmc_user _subs_1.o nmc_user_subs_2.o drvMcaAIMAsyn.o icb_strings.o icb_crmpsc.o icb_handler_subs.o icb_control_subs.o icb_control_subs2.o icb_user_su bs.o icb_show_modules.o drvIcbAsyn.o DSA2000.o mcaCanberraRegister.o -lasyn -lrecIoc -lsoftDevIoc -lmiscIoc -lrsrvIoc -ldbtoolsIoc -lasIo c -ldbIoc -lregistryIoc -ldbStaticIoc -lca -lCom -lwpcap -lPacket -ltirpc -lpthread -lm /cygdrive/j/epics/devel/mca/lib/cygwin-x86/wpcap.lib: error adding symbols: File in wrong format collect2: error: ld returned 1 exit status /corvette/usr/local/epics/base-3.14.12.5/configure/RULES_BUILD:300: recipe for target 'mcaCanberra.dll' failed make[1]: *** [mcaCanberra.dll] Error 1 This is the error I get when building dxp/dxpApp/handelSrc: $ make make -C O.cygwin-x86 -f ../Makefile TOP=../../.. \ T_A=cygwin-x86 install make[1]: Entering directory '/cygdrive/j/epics/devel/dxp/dxpApp/handelSrc/O.cygwin-x86' g++ -o handel.dll -shared -Wl,--out-implib,handel.lib -L/cygdrive/j/epics/devel/dxp/lib/cygwin-x86 -L/cygdrive/h/epics/base-3.14.12.5/lib/cy gwin-x86 -m32 xerxes.o xerxes_log.o md_log.o handel.o fdd.o psl.o handel_dbg.o handel_detchan.o handel_dyn_default.o ha ndel_dyn_detector.o handel_dyn_firmware.o handel_dyn_module.o handel_file.o handel_log.o handel_memdbg_win32.o handel_run_control.o handel_r un_params.o handel_sort.o handel_system.o handel_xerxes.o xia_assert.o xia_file.o xia_mem.o xia_mem_point.o saturn.o saturn_psl.o xmap.o xma p_psl.o mercury.o mercury_psl.o xia_epp.o xia_plx.o xia_usb.o xia_usb2.o md_win32.o -lrecIoc -lsoftDevIoc -lmiscIoc -lrsrvIoc -ldbtoolsIo c -lasIoc -ldbIoc -lregistryIoc -ldbStaticIoc -lca -lCom -lDLPORTIO -lPlxApi -lsetupapi -lUser32 -lpthread -lm /cygdrive/j/epics/devel/dxp/lib/cygwin-x86/PlxApi.lib: error adding symbols: File in wrong format collect2: error: ld returned 1 exit status /corvette/usr/local/epics/base-3.14.12.5/configure/RULES_BUILD:300: recipe for target 'handel.dll' failed make[1]: *** [handel.dll] Error 1 make[1]: Leaving directory '/cygdrive/j/epics/devel/dxp/dxpApp/handelSrc/O.cygwin-x86' /corvette/usr/local/epics/base-3.14.12.5/configure/RULES_ARCHS:64: recipe for target 'install.cygwin-x86' failed make: *** [install.cygwin-x86] Error 2 In both cases the error is “error adding symbols: File in wrong format” when trying to link the DLL with a vendor library (.lib) file. These same vendor libraries used to work fine when building statically on an older version of Cygwin. Running “file” and “nm” on the .lib files seems to work OK: $ file PlxApi.lib PlxApi.lib: current ar archive rivers@rivers-mobile2 /corvette/home/epics/devel/dxp/lib/cygwin-x86 $ nm PlxApi.lib PlxApi631.dll: 00000000 i .idata$2 00000000 i .idata$4 00000000 i .idata$5 00000000 i .idata$6 000420ff a @comp.id 00000000 I __IMPORT_DESCRIPTOR_PlxApi631 U __NULL_IMPORT_DESCRIPTOR U ⌂PlxApi631_NULL_THUNK_DATA PlxApi631.dll: 000420ff a @comp.id 00000000 I __NULL_IMPORT_DESCRIPTOR PlxApi631.dll: 000420ff a @comp.id 00000000 I ⌂PlxApi631_NULL_THUNK_DATA PlxApi631.dll: 00000000 I .idata$4 00000000 I .idata$5 00000000 I .idata$6 00000000 T .text 00000000 I __imp__PlxPci_ApiVersion U __IMPORT_DESCRIPTOR_PlxApi631 00000000 T _PlxPci_ApiVersion PlxApi631.dll: 00000000 I .idata$4 00000000 I .idata$5 00000000 I .idata$6 00000000 T .text 00000000 I __imp__PlxPci_ChipTypeGet U __IMPORT_DESCRIPTOR_PlxApi631 00000000 T _PlxPci_ChipTypeGet PlxApi631.dll: 00000000 I .idata$4 00000000 I .idata$5 00000000 I .idata$6 00000000 T .text 00000000 I __imp__PlxPci_ChipTypeSet U __IMPORT_DESCRIPTOR_PlxApi631 00000000 T _PlxPci_ChipTypeSet … Does anyone know what the problem could be, and how to work around it? Thanks, Mark |