Проблема сборки PAPyRUS под OpenBSD 6.2
-
Доброго времени суток, дамы и господа.
Я пишу в связи с неприятной ситуацией, а именно, с трудностями при попытке скомпилировать исходный код программы PAPyRUS на OpenBSD.
ОС: OpenBSD 6.2 i386.
Железо:
Модель: Thinkpad T43.
Motif установлен, ровно как и TCL (правда, версии 8.6, что гораздо выше оной в требованиях к системе в README PAPyRUS).
Функции tcl подправлены в соответствии с новой версией оной.
Исправлены проблемы вида:
#include <malloc.h> #include <tcl.h>
заменено на
и так далее.#include <sys/malloc.h> #include <tcl8.6/tcl.h>
Однако, при компиляции выдает следующее:
/usr/lib/crt0.o: In function `_start':
(.text+0x52): undefined reference to `main'
collect2: ld returned 1 exit status
Читал про неободимость выставить флаг -ldl, но так же читал, что то - чисто линуховая особенность, и что в "опенке" нет нужды, это встроено.
Я новичок в этой теме.
Буду благодарен за любую помощь, даже за RTFM, если ссылочку на оные, конечно, укажите.
Makefile и (не)полный лог прилагается.
Makefile:# # Makefile -- # # This file contains the Makefile of the PAPyRUS application. # # Copyright (C) 1996-1997 Carlos Nunes - loscar@mime.univ-paris8.fr # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # If you change the INSTALL_LIB variable, you MUST set the PAPYRUS_DIR # shell variable to the correct value, each time you run PAPyRUS. # # Directory for Papyrus libs INSTALL_LIB = /usr/local/lib # Directory for Papyrus binary INSTALL_DIR = /usr/local/bin CC = gcc CCC = g++ CXX = g++ #RES_FILE = Papyrus.ad.fr # French version of the App defaults RES_FILE = Papyrus.ad.eng # English version of the App defaults # # Tcl library (7.5 or newer) # TCL = TCL_INCLUDE = /usr/local/include/ TCL_LIB = /usr/local/lib/tcl/tcl8.6 # # X11R6 library # X11 = -lX11 X11_INCLUDE = /usr/X11R6/include -I/usr/local/include -I/usr/dt/include/ -I/usr/X11R6/include/ X11_LIB = /usr/X11R6/lib # # Xpm library # XPM = -lXpm XPM_INCLUDE = /usr/X11R6/include XPM_LIB = /usr/X11R6/lib # # Motif 2.0 library # XM = -lXm XM_INCLUDE = /usr/X11R6/include XM_LIB = /usr/X11R6/lib FLAGS = -O2 -Wall -ansi -DUSE_NON_CONST -nostartfiles -g -v #FLAGS = -g -Wall -ansi -pedantic ######################################################################################### # # You may not have to change anything after this message. # ######################################################################################### CXXDEFINES = -DHAVE_GUI -I$(TCL_INCLUDE) -I$(XPM_INCLUDE) \ -I$(XM_INCLUDE) -I$(X11_INCLUDE) CDEFINES = -DHAVE_GUI -I$(TCL_INCLUDE) -I$(XPM_INCLUDE) \ -I$(XM_INCLUDE) -I$(X11_INCLUDE) CXXFLAGS = $(FLAGS) $(CXXDEFINES) -fpermissive -g -Wall -v CFLAGS = $(FLAGS) $(CDEFINES) -g -Wall LIBS = -L$(XM_LIB) $(XM) -L$(X11_LIB) -L$(X11_LIB) \ -lXmu -lXt -lSM -lICE -lXext \ -L$(XPM_LIB) $(XPM) -lX11 -L$(TCL_LIB) $(TCL) \ -L/usr/local/lib -L/usr/dt/lib/ -L/usr/X11R6/lib/ \ -lX11 -L/usr/local/lib/tcl/ SRCS = gui/callbacks.c gui/menus.c gui/widgets.c \ gui/modify_text.c gui/mainWin.c gui/dialogs.c \ gui/actions.c gui/init.c kernel/isfuncs.cc \ kernel/attributes.cc kernel/main.cc kernel/papyrus_output.cc \ kernel/container.cc kernel/ps_output.cc kernel/ascii_output.cc \ kernel/frame.cc kernel/cursor.cc kernel/display.cc \ kernel/events.cc kernel/page.cc kernel/paragraph.cc \ kernel/document.cc kernel/line.cc kernel/word.cc \ kernel/wordSegment.cc kernel/thePosition.cc kernel/image.cc \ kernel/util.cc \ kernel/FontManager/fontManager.cc kernel/FontManager/fontFamily.cc\ kernel/StyleManager/styleManager.cc kernel/StyleManager/styleItem.cc\ tcl/tclMain.c tcl/tclInit.cc tcl/tclGet.cc \ tcl/commandsAM.cc tcl/commandsNZ.cc \ misc/shortcuts.c misc/parseAFM.c misc/env.c OBJS = gui/callbacks.o gui/menus.o gui/widgets.o \ gui/modify_text.o gui/mainWin.o gui/dialogs.o \ gui/actions.o gui/init.o kernel/isfuncs.o \ kernel/attributes.o kernel/main.o kernel/papyrus_output.o \ kernel/container.o kernel/ps_output.o kernel/ascii_output.o \ kernel/frame.o kernel/cursor.o kernel/display.o \ kernel/events.o kernel/page.o kernel/paragraph.o \ kernel/document.o kernel/line.o kernel/word.o \ kernel/wordSegment.o kernel/thePosition.o kernel/image.o \ kernel/util.o \ kernel/FontManager/fontManager.o kernel/FontManager/fontFamily.o \ kernel/StyleManager/styleManager.o kernel/StyleManager/styleItem.o \ tcl/tclMain.o tcl/tclInit.o tcl/tclGet.o \ tcl/commandsAM.o tcl/commandsNZ.o \ misc/shortcuts.o misc/parseAFM.o misc/env.o INCS = gui/actions.h gui/callbacks.h gui/dialogs.h \ gui/globals.h gui/mainWin.h gui/menus.h \ gui/widgets.h gui/init.h gui/modify_text.h \ kernel/container.h kernel/events.h kernel/marker.h \ kernel/line.h kernel/attributes.h \ kernel/cursor.h kernel/frame.h kernel/page.h \ kernel/word.h kernel/display.h kernel/papyrus.h \ kernel/globals.h kernel/paragraph.h kernel/margin.h \ kernel/wordSegment.h kernel/shape.h kernel/document.h \ kernel/isfuncs.h kernel/thePosition.h kernel/image.h \ kernel/util.h kernel/output.h kernel/FontManager/fontFamily.h \ kernel/FontManager/fontManager.h kernel/StyleManager/styleItem.h \ kernel/StyleManager/styleManager.h \ tcl/mytcl.h tcl/tclGet.h tcl/commands.h \ misc/shortcuts.h misc/parseAFM.h misc/env.h all: bin/papyrus bin/papyrus: $(OBJS) $(CC) -o $@ $^ -lpcap -v $(LIBS) clean: \rm -f $(OBJS) *~ *.bak *.BAK bin/papyrus *.ps install: uninstall bin/papyrus mkdir -p -m 755 $(INSTALL_LIB)/Papyrus/examples install -m 644 lib/examples/* $(INSTALL_LIB)/Papyrus/examples mkdir -p -m 755 $(INSTALL_LIB)/Papyrus/scripts install -m 644 lib/scripts/* $(INSTALL_LIB)/Papyrus/scripts mkdir -p -m 755 $(INSTALL_LIB)/Papyrus/fonts/afm install -m 644 lib/fonts/afm/* $(INSTALL_LIB)/Papyrus/fonts/afm mkdir -m 755 $(INSTALL_LIB)/Papyrus/fonts/ps mkdir -m 755 $(INSTALL_LIB)/Papyrus/ps install -m 644 lib/ps/* $(INSTALL_LIB)/Papyrus/ps install -s -m 755 bin/papyrus $(INSTALL_DIR) install -m 644 bin/Papyrus.ad.common /usr/X11R6/lib/X11/app-defaults/Papyrus cat bin/$(RES_FILE) >> /usr/X11R6/lib/X11/app-defaults/Papyrus sed s/auto_mkindex/#auto_mkindex/ $(INSTALL_LIB)/Papyrus/scripts/papyrus-init.tcl \ > $(INSTALL_LIB)/Papyrus/scripts/papyrus-init.tcl.new mv -f $(INSTALL_LIB)/Papyrus/scripts/papyrus-init.tcl.new \ $(INSTALL_LIB)/Papyrus/scripts/papyrus-init.tcl mkdir -m 755 $(INSTALL_LIB)/Papyrus/doc install -m644 doc/* $(INSTALL_LIB)/Papyrus/doc uninstall: @\rm -rf $(INSTALL_LIB)/Papyrus @\rm -f $(INSTALL_DIR)/papyrus depend: cp Makefile Makefile.bak sed '/^#----- dependences -----/q' Makefile.bak >Makefile echo >>Makefile $(CXX) $(CXXFLAGS) -M $(SRCS) >>Makefile
#dependencies не вместились в поле "Body". -
Лог:
Лог (далеко не полный, ибо полный не вместился):
Script started on Thu Oct 5 13:02:25 2023 $ make depend cp Makefile Makefile.bak sed '/^#----- dependences -----/q' Makefile.bak >Makefile echo >>Makefile g++ -O2 -Wall -ansi -DUSE_NON_CONST -nostartfiles -g -v -DHAVE_GUI -I/usr/local/include/ -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/local/include -I/usr/dt/include/ -I/usr/X11R6/include/ -fpermissive -g -Wall -v -M gui/callbacks.c gui/menus.c gui/widgets.c gui/modify_text.c gui/mainWin.c gui/dialogs.c gui/actions.c gui/init.c kernel/isfuncs.cc kernel/attributes.cc kernel/main.cc kernel/papyrus_output.cc kernel/container.cc kernel/ps_output.cc kernel/ascii_output.cc kernel/frame.cc kernel/cursor.cc kernel/display.cc kernel/events.cc kernel/page.cc kernel/paragraph.cc kernel/document.cc kernel/line.cc kernel/word.cc kernel/wordSegment.cc kernel/thePosition.cc kernel/image.cc kernel/util.cc kernel/FontManager/fontManager.cc kernel/FontManager/fontFamily.cc kernel/StyleManager/styleManager.cc kernel/StyleManager/styleItem.cc tcl/tclMain.c tcl/tclInit.cc tcl/tclGet.cc tcl/commandsAM.cc tcl/commandsNZ.cc misc/shortcuts.c misc/parseAFM.c misc/env.c >>Makefile Reading specs from /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/specs Target: i386-unknown-openbsd6.2 Configured with: OpenBSD/i386 system compiler Thread model: posix gcc version 4.2.1 20070719 /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/cc1plus -E -quiet -v -v -I/usr/local/include/ -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/local/include -I/usr/dt/include/ -I/usr/X11R6/include/ -M -DUSE_NON_CONST -DHAVE_GUI gui/callbacks.c -ansi -Wall -fpermissive -fworking-directory -O2 ignoring duplicate directory "/usr/include" ignoring duplicate directory "/usr/X11R6/include" ignoring duplicate directory "/usr/X11R6/include" ignoring duplicate directory "/usr/local/include" ignoring duplicate directory "/usr/X11R6/include/" #include "..." search starts here: #include <...> search starts here: <b>####BLA_BLA
-
/usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/cc1plus -E -quiet -v -v -I/usr/local/include/ -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/local/include -I/usr/dt/include/ -I/usr/X11R6/include/ -M -DUSE_NON_CONST -DHAVE_GUI kernel/events.cc -ansi -Wall -fpermissive -fworking-directory -O2 ignoring duplicate directory "/usr/include" ignoring duplicate directory "/usr/X11R6/include" ignoring duplicate directory "/usr/X11R6/include" ignoring duplicate directory "/usr/local/include" ignoring duplicate directory "/usr/X11R6/include/" #include "..." search starts here: #include <...> search starts here: /usr/local/include/ <b>####BLA-BLA-BLA</b> tcl/tclInit.cc:111: warning: deprecated conversion from string constant to 'char*' tcl/tclInit.cc:111: warning: deprecated conversion from string constant to 'char*' <b>####BLA-BLA-BLA</b> End of search list. GNU C version 4.2.1 20070719 (i386-unknown-openbsd6.2) compiled by GNU C version 4.2.1 20070719 . GGC heuristics: --param ggc-min-expand=65 --param ggc-min-heapsize=129842 Compiler executable checksum: 7fcbccfe3890321320d6e1c8d4f51ffa as -o env.o /tmp//ccf9ezVm.s gcc -o bin/papyrus -lpcap -v -L/usr/X11R6/lib -lXm -L/usr/X11R6/lib -L/usr/X11R6/lib -lXmu -lXt -lSM -lICE -lXext -L/usr/X11R6/lib -lXpm -lX11 -L/usr/local/lib/tcl/tcl8.6 -L/usr/local/lib -L/usr/dt/lib/ -L/usr/X11R6/lib/ -lX11 -L/usr/local/lib/tcl/ Reading specs from /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/specs Target: i386-unknown-openbsd6.2 Configured with: OpenBSD/i386 system compiler Thread model: posix gcc version 4.2.1 20070719 /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/collect2 --eh-frame-hdr -e __start -Bdynamic -dynamic-linker /usr/libexec/ld.so -o bin/papyrus /usr/lib/crt0.o /usr/lib/crtbegin.o -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/local/lib/tcl/tcl8.6 -L/usr/local/lib -L/usr/dt/lib/ -L/usr/X11R6/lib/ -L/usr/local/lib/tcl/ -L/usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1 -lpcap -lXm -lXmu -lXt -lSM -lICE -lXext -lXpm -lX11 -lX11 -lgcc -lc -lgcc /usr/lib/crtend.o /usr/local/lib/libXm.so.6.1: warning: warning: wcscat() is almost always misused, please use wcslcat() /usr/local/lib/libXm.so.6.1: warning: warning: sprintf() is often misused, please use snprintf() /usr/local/lib/libXm.so.6.1: warning: warning: strcpy() is almost always misused, please use strlcpy() /usr/local/lib/libXm.so.6.1: warning: warning: wcscpy() is almost always misused, please use wcslcpy() /usr/local/lib/libXm.so.6.1: warning: warning: strcat() is almost always misused, please use strlcat() /usr/lib/crt0.o: In function `_start': (.text+0x52): undefined reference to `main' collect2: ld returned 1 exit status *** Error 1 in /home/Sataja/Papyrus1.1.1 (Makefile:152 'bin/papyrus') $ exit Script done on Thu Oct 5 13:03:20 2023
-
Хм. Вывод команды ldd --version не дал ничего, кроме :
ldd --version ldd: unknown option -- - usage: ldd program ...
но из pkg_info я узнал, что у меня стоитglib2-2.52.3 (installed).
-
А так, я не являюсь большим специалистом по программированию в linux, но подозреваю, что некоторые функции обязаны отличаться, однако, скажем, Hello World, даже с использованием Motif скомпилировался удачно, ровно как и Xbae.
А вот ни GNU Oleo, ни, тем более, продукт того француза PAPyRUS, ну ни в какую не хотят собираться. Даже компиляция XmHTML вызывает трудности, критические. Но на них я пока и не замахиваюсь, мне бы с этим аналогом Word'а разобраться.
> OpenBSD 6.2 i386
32-битная. -
32. Это код из проекта из 97-го года.
https://motif.ics.com/book/export/html/31
http://www.sourcefiles.org/Wordprocessors/papyrus-1.1.1.src.tar.gz.shtml
$ file Downloads/papyrus-1.1.1.src.tar.gz
Downloads/papyrus-1.1.1.src.tar.gz: gzip compressed data, was "papyrus-1.1.1.src.tar", last modified: Wed Apr 16 21:38:20 1997, max compression, from Unix -
PAPyRUS (как перевести акроним не знаю, да и акроним ли это?)- редактор текстов, вроде LibreOffice Writer, только на Motif.
GNU Oleo - редактор таблиц. На Xbae (виджет таблиц) и Motif.
XmHTML - тут из названия все ясно.
olegus:97 года? Думаю, надо искать компилятор того же года((( Больше вариантов не знаю(((
А кроме этого? Ибо я не собираюсь ставить систему 2000-х годов.)