ZaidaTek / ZaidaScope

Oscilloscope PC-Software for Arduino Uno/Nano/AT328P
48 stars 7 forks source link

Linux port? #3

Open PMKrol opened 1 year ago

PMKrol commented 1 year ago

Hi!

Can You provide instructions on how to compile it for Ubuntu? If it is possible at all, I saw Your readme of ZTK and all...

Regards!

PMKrol commented 1 year ago

After changed a bit source files and I'm getting:

gcc ZS.c
/usr/bin/ld: /tmp/ccTzE09J.o: in function `main':
ZS.c:(.text+0xf): undefined reference to `ZTK_Main'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Main':
ZS.c:(.text+0x38): undefined reference to `ZTK_TimeoutReset'
/usr/bin/ld: ZS.c:(.text+0x6d): undefined reference to `ZSDEV_Read'
/usr/bin/ld: ZS.c:(.text+0x86): undefined reference to `ZTK_TimeoutReset'
/usr/bin/ld: ZS.c:(.text+0x9b): undefined reference to `ZTL_Sleep'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Printer':
ZS.c:(.text+0xd5): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0xe1): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0xfe): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x10b): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x117): undefined reference to `ZTK_PrintPos'
/usr/bin/ld: ZS.c:(.text+0x11c): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x13f): undefined reference to `ZTK_GetTicks'
/usr/bin/ld: ZS.c:(.text+0x291): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x29d): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x2ba): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x2c7): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x2cc): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x317): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x323): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x340): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x34d): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x352): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x361): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x3b0): undefined reference to `ZDX_DataGetLastLine'
/usr/bin/ld: ZS.c:(.text+0x429): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x460): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x46c): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x49f): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x4d2): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x4d7): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x513): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x57b): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x587): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x5a4): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x5c1): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x5c6): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x5e5): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x5f1): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x60e): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x62b): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x630): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x649): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x655): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x672): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x68f): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x694): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x6b7): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x70b): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x717): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x734): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x751): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x756): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x771): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x77d): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x79a): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x7b7): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x7bc): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x85d): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x869): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x886): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x8a3): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x8a8): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: ZS.c:(.text+0x8c0): undefined reference to `ZTK_PrintBufferLoad'
/usr/bin/ld: ZS.c:(.text+0x8cc): undefined reference to `ZTK_PrintBufferGetSize'
/usr/bin/ld: ZS.c:(.text+0x8e9): undefined reference to `ZTK_PrintPosX'
/usr/bin/ld: ZS.c:(.text+0x906): undefined reference to `ZTK_PrintPosY'
/usr/bin/ld: ZS.c:(.text+0x90b): undefined reference to `ZTK_PrintBuffer'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Draw':
ZS.c:(.text+0x92f): undefined reference to `ZTK_DrawClear'
/usr/bin/ld: ZS.c:(.text+0x95e): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x971): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x9a7): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x9de): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0xa44): undefined reference to `ZDX_DiagramRender'
/usr/bin/ld: ZS.c:(.text+0xa5a): undefined reference to `ZTK_DrawSurface'
/usr/bin/ld: ZS.c:(.text+0xa5f): undefined reference to `ZUI_HostDraw'
/usr/bin/ld: ZS.c:(.text+0xa69): undefined reference to `ZTK_DrawPresent'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_DiskLoad':
ZS.c:(.text+0xa8c): undefined reference to `ZKY_New'
/usr/bin/ld: ZS.c:(.text+0xab1): undefined reference to `ZKY_FileRead'
/usr/bin/ld: ZS.c:(.text+0xad3): undefined reference to `ZKY_ReadHex'
/usr/bin/ld: ZS.c:(.text+0xaed): undefined reference to `ZKY_ReadHex'
/usr/bin/ld: ZS.c:(.text+0xb07): undefined reference to `ZKY_ReadHex'
/usr/bin/ld: ZS.c:(.text+0xb21): undefined reference to `ZKY_ReadHex'
/usr/bin/ld: ZS.c:(.text+0xb3b): undefined reference to `ZKY_ReadHex'
/usr/bin/ld: /tmp/ccTzE09J.o:ZS.c:(.text+0xb55): more undefined references to `ZKY_ReadHex' follow
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_DiskLoad':
ZS.c:(.text+0xd01): undefined reference to `ZKY_Free'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_Save':
ZS.c:(.text+0xd1f): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0xd3f): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0xd54): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0xd69): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0xd7e): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: /tmp/ccTzE09J.o:ZS.c:(.text+0xd93): more undefined references to `ZUI_GetDataValue' follow
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_Save':
ZS.c:(.text+0xdb3): undefined reference to `ZTK_GetPaletteSystem'
/usr/bin/ld: ZS.c:(.text+0xdcd): undefined reference to `ZTM_ColorConvert'
/usr/bin/ld: ZS.c:(.text+0xdea): undefined reference to `ZTM_ColorConvert'
/usr/bin/ld: ZS.c:(.text+0xe07): undefined reference to `ZTM_ColorConvert'
/usr/bin/ld: ZS.c:(.text+0xe24): undefined reference to `ZTM_ColorConvert'
/usr/bin/ld: ZS.c:(.text+0xe41): undefined reference to `ZTM_ColorConvert'
/usr/bin/ld: /tmp/ccTzE09J.o:ZS.c:(.text+0xe5e): more undefined references to `ZTM_ColorConvert' follow
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_DiskSave':
ZS.c:(.text+0xf82): undefined reference to `ZKY_New'
/usr/bin/ld: ZS.c:(.text+0xf9f): undefined reference to `ZKY_SetHex'
/usr/bin/ld: ZS.c:(.text+0xfb8): undefined reference to `ZKY_SetHex'
/usr/bin/ld: ZS.c:(.text+0xfd1): undefined reference to `ZKY_SetHex'
/usr/bin/ld: ZS.c:(.text+0xfea): undefined reference to `ZKY_SetHex'
/usr/bin/ld: ZS.c:(.text+0x1003): undefined reference to `ZKY_SetHex'
/usr/bin/ld: /tmp/ccTzE09J.o:ZS.c:(.text+0x101c): more undefined references to `ZKY_SetHex' follow
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_DiskSave':
ZS.c:(.text+0x11cd): undefined reference to `ZKY_FileWrite'
/usr/bin/ld: ZS.c:(.text+0x11d9): undefined reference to `ZKY_Free'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Init':
ZS.c:(.text+0x1394): undefined reference to `ZTX_Init'
/usr/bin/ld: ZS.c:(.text+0x13a5): undefined reference to `ZTM8_Zero'
/usr/bin/ld: ZS.c:(.text+0x13b6): undefined reference to `ZTM8_Zero'
/usr/bin/ld: ZS.c:(.text+0x13c7): undefined reference to `ZTM8_Zero'
/usr/bin/ld: ZS.c:(.text+0x13d8): undefined reference to `ZTM8_Zero'
/usr/bin/ld: ZS.c:(.text+0x13e9): undefined reference to `ZTM8_Zero'
/usr/bin/ld: ZS.c:(.text+0x13ee): undefined reference to `ZTL_ScreenWidth'
/usr/bin/ld: ZS.c:(.text+0x1404): undefined reference to `ZTL_ScreenHeight'
/usr/bin/ld: ZS.c:(.text+0x141a): undefined reference to `ZTL_ScreenWidth'
/usr/bin/ld: ZS.c:(.text+0x142e): undefined reference to `ZTL_ScreenHeight'
/usr/bin/ld: ZS.c:(.text+0x14b7): undefined reference to `ZS_TextLoad'
/usr/bin/ld: ZS.c:(.text+0x14d9): undefined reference to `ZTK_New'
/usr/bin/ld: ZS.c:(.text+0x14e6): undefined reference to `ZTK_Renderer'
/usr/bin/ld: ZS.c:(.text+0x14eb): undefined reference to `ZSDIA_Init'
/usr/bin/ld: ZS.c:(.text+0x14f0): undefined reference to `ZSGUI_Init'
/usr/bin/ld: ZS.c:(.text+0x14fa): undefined reference to `ZSGUI_Menu'
/usr/bin/ld: ZS.c:(.text+0x14ff): undefined reference to `ZTK_Open'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Renderer':
ZS.c:(.text+0x1521): undefined reference to `ZS_TextLoad'
/usr/bin/ld: ZS.c:(.text+0x152e): undefined reference to `ZTK_Renderer'
/usr/bin/ld: ZS.c:(.text+0x1533): undefined reference to `ZSDIA_Colors'
/usr/bin/ld: ZS.c:(.text+0x1545): undefined reference to `ZSDIA_FlipV'
/usr/bin/ld: ZS.c:(.text+0x154a): undefined reference to `ZSGUI_Exit'
/usr/bin/ld: ZS.c:(.text+0x154f): undefined reference to `ZSGUI_Init'
/usr/bin/ld: ZS.c:(.text+0x1554): undefined reference to `ZSGUI_Size'
/usr/bin/ld: ZS.c:(.text+0x1559): undefined reference to `ZSGUI_Menu'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Exit':
ZS.c:(.text+0x1583): undefined reference to `ZSDEV_Free'
/usr/bin/ld: ZS.c:(.text+0x1588): undefined reference to `ZSDIA_Exit'
/usr/bin/ld: ZS.c:(.text+0x158d): undefined reference to `ZSGUI_Exit'
/usr/bin/ld: ZS.c:(.text+0x1592): undefined reference to `ZTK_Free'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_HUD':
ZS.c:(.text+0x15ac): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x15b7): undefined reference to `ZSGUI_Menu'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_TriggerType':
ZS.c:(.text+0x15d1): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x15e8): undefined reference to `ZSDEV_TriggerFlank'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_TriggerMode':
ZS.c:(.text+0x1616): undefined reference to `ZUI_DataValue'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_Menu':
ZS.c:(.text+0x168e): undefined reference to `ZSGUI_Menu'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Connect':
ZS.c:(.text+0x16ac): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x16b3): undefined reference to `ZTL_SerialAddress'
/usr/bin/ld: ZS.c:(.text+0x16c6): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x16d8): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x16ef): undefined reference to `ZSDEV_Connect'
/usr/bin/ld: ZS.c:(.text+0x16fb): undefined reference to `ZTM8_Free'
/usr/bin/ld: ZS.c:(.text+0x1700): undefined reference to `ZSDIA_Grid'
/usr/bin/ld: ZS.c:(.text+0x1705): undefined reference to `ZSDIA_Reset'
/usr/bin/ld: ZS.c:(.text+0x172f): undefined reference to `ZUI_DataMaximum'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Disconnect':
ZS.c:(.text+0x1753): undefined reference to `ZSDEV_Disconnect'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Size':
ZS.c:(.text+0x177e): undefined reference to `ZTK_GetRect'
/usr/bin/ld: ZS.c:(.text+0x179f): undefined reference to `ZSGUI_Size'
/usr/bin/ld: ZS.c:(.text+0x17c7): undefined reference to `ZUI_GetBorderSize'
/usr/bin/ld: ZS.c:(.text+0x17d8): undefined reference to `ZUI_GetBorderSize'
/usr/bin/ld: ZS.c:(.text+0x17f6): undefined reference to `ZUI_GetBorderSize'
/usr/bin/ld: ZS.c:(.text+0x183e): undefined reference to `ZTL_ScreenWidth'
/usr/bin/ld: ZS.c:(.text+0x1849): undefined reference to `ZTL_ScreenHeight'
/usr/bin/ld: ZS.c:(.text+0x1860): undefined reference to `ZTM_SurfaceNew'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_CursorLevel':
ZS.c:(.text+0x18eb): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x192f): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x19fc): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_Level':
ZS.c:(.text+0x1a97): undefined reference to `ZTK_Repeat'
/usr/bin/ld: ZS.c:(.text+0x1adc): undefined reference to `ZSDEV_TriggerLevel'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSUSR_Channels':
ZS.c:(.text+0x1b09): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x1b10): undefined reference to `ZTM_BitCount'
/usr/bin/ld: ZS.c:(.text+0x1b47): undefined reference to `ZUI_DataMaximum'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_SaveMeta':
ZS.c:(.text+0x1b6e): undefined reference to `ZTC8_Merge'
/usr/bin/ld: ZS.c:(.text+0x1b81): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x1b93): undefined reference to `ZUI_GetDataValue'
/usr/bin/ld: ZS.c:(.text+0x1bbc): undefined reference to `ZTC8_UnsignedBase'
/usr/bin/ld: ZS.c:(.text+0x1bcb): undefined reference to `ZTC8_MergeFreeB'
/usr/bin/ld: ZS.c:(.text+0x1bed): undefined reference to `ZTC8_UnsignedBase'
/usr/bin/ld: ZS.c:(.text+0x1bf8): undefined reference to `ZTC8_MergeFree'
/usr/bin/ld: ZS.c:(.text+0x1c06): undefined reference to `ZTM_BitCount'
/usr/bin/ld: ZS.c:(.text+0x1c15): undefined reference to `ZTM8_New'
/usr/bin/ld: ZS.c:(.text+0x1c94): undefined reference to `ZKY_New'
/usr/bin/ld: ZS.c:(.text+0x1caf): undefined reference to `ZKY_Set'
/usr/bin/ld: ZS.c:(.text+0x1cc6): undefined reference to `ZKY_Set'
/usr/bin/ld: ZS.c:(.text+0x1ce7): undefined reference to `ZKY_FileWrite'
/usr/bin/ld: ZS.c:(.text+0x1cf3): undefined reference to `ZTM8_Free'
/usr/bin/ld: ZS.c:(.text+0x1cff): undefined reference to `ZTM8_Free'
/usr/bin/ld: ZS.c:(.text+0x1d0b): undefined reference to `ZTM8_Free'
/usr/bin/ld: ZS.c:(.text+0x1d17): undefined reference to `ZKY_Free'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSDIA_SaveBMP':
ZS.c:(.text+0x1d30): undefined reference to `ZTM_Time'
/usr/bin/ld: ZS.c:(.text+0x1d43): undefined reference to `ZTC8_PathFileISO'
/usr/bin/ld: ZS.c:(.text+0x1d58): undefined reference to `ZTK_GetPaletteSystem'
/usr/bin/ld: ZS.c:(.text+0x1d70): undefined reference to `ZTM_SurfaceSaveToBitmapFile'
/usr/bin/ld: ZS.c:(.text+0x1d7c): undefined reference to `ZTM8_Free'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZSDIA_SavePNG':
ZS.c:(.text+0x1d90): undefined reference to `ZTM_Time'
/usr/bin/ld: ZS.c:(.text+0x1da3): undefined reference to `ZTC8_PathFileISO'
/usr/bin/ld: ZS.c:(.text+0x1db8): undefined reference to `ZTK_GetPaletteSystem'
/usr/bin/ld: ZS.c:(.text+0x1dd0): undefined reference to `ZTX_SurfaceSaveToPNGFile'
/usr/bin/ld: ZS.c:(.text+0x1ddc): undefined reference to `ZTM8_Free'
/usr/bin/ld: /tmp/ccTzE09J.o: in function `ZS_Event':
ZS.c:(.text+0x1f3d): undefined reference to `ZTK_Quit'
/usr/bin/ld: ZS.c:(.text+0x1f7f): undefined reference to `ZSDEV_Capture'
/usr/bin/ld: ZS.c:(.text+0x1f8b): undefined reference to `ZSDEV_Record'
/usr/bin/ld: ZS.c:(.text+0x1f99): undefined reference to `ZSDIA_Reset'
/usr/bin/ld: ZS.c:(.text+0x1fcd): undefined reference to `ZUI_HostPoll'
/usr/bin/ld: ZS.c:(.text+0x20a4): undefined reference to `ZSDIA_Move'
/usr/bin/ld: ZS.c:(.text+0x2108): undefined reference to `ZSDEV_Capture'
/usr/bin/ld: ZS.c:(.text+0x2220): undefined reference to `ZTK_PollMessages'
collect2: error: ld returned 1 exit status