FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

dynamic linking

 
Post new topic   Reply to topic     Forum Index -> gtkD
View previous topic :: View next topic  
Author Message
bioinfornatics



Joined: 22 Jun 2010
Posts: 90

PostPosted: Wed Jan 18, 2012 6:58 pm    Post subject: dynamic linking Reply with quote

hi,
why with ldd i did not see the dynamic link to phobos or druntime ?
Code:
# ldd /usr/lib64/libgtkd.so.1.5.1
   linux-vdso.so.1 =>  (0x00007fff58fff000)
   libc.so.6 => /lib64/libc.so.6 (0x00007f8b948d7000)
   /lib64/ld-linux-x86-64.so.2 (0x000000317a000000)


it seem -lphobos2-ldc -ldruntime-ldc do not works with gcc

with ldc it is good:
Code:
ldc2 -shared -L-lphobos2-ldc -L-ldruntime-ldc -L-lm -L-ldl -L-lrt  src/atk/Image.pic.o src/atk/Action.pic.o src/atk/Hypertext.pic.o src/atk/Table.pic.o src/atk/Relation.pic.o src/atk/ValueAtk.pic.o src/atk/NoOpObjectFactory.pic.o src/atk/Selection.pic.o src/atk/GObjectAccessible.pic.o src/atk/EditableText.pic.o src/atk/NoOpObject.pic.o src/atk/Component.pic.o src/atk/Registry.pic.o src/atk/Text.pic.o src/atk/Util.pic.o src/atk/Document.pic.o src/atk/Hyperlink.pic.o src/atk/State.pic.o src/atk/ObjectFactory.pic.o src/atk/StreamableContent.pic.o src/atk/ObjectAtk.pic.o src/atk/RelationSet.pic.o src/atk/StateSet.pic.o src/gio/IOModule.pic.o src/gio/ThemedIcon.pic.o src/gio/EmblemedIcon.pic.o src/gio/FileMonitor.pic.o src/gio/Emblem.pic.o src/gio/Cancellable.pic.o src/gio/ConverterOutputStream.pic.o src/gio/Icon.pic.o src/gio/Credentials.pic.o src/gio/Socket.pic.o src/gio/FileInfo.pic.o src/gio/SeekableT.pic.o src/gio/IOStream.pic.o src/gio/IconT.pic.o src/gio/OutputStream.pic.o src/gio/SrvTarget.pic.o src/gio/AppInfoT.pic.o src/gio/ProxyResolverIF.pic.o src/gio/SocketConnectableIF.pic.o src/gio/DataOutputStream.pic.o src/gio/SocketConnectableT.pic.o src/gio/SeekableIF.pic.o src/gio/FileAttributeInfoList.pic.o src/gio/ProxyIF.pic.o src/gio/UnixMountPoint.pic.o src/gio/ProxyResolverT.pic.o src/gio/ProxyAddress.pic.o src/gio/Drive.pic.o src/gio/UnixMountMonitor.pic.o src/gio/MountT.pic.o src/gio/SocketControlMessage.pic.o src/gio/Converter.pic.o src/gio/UnixFDMessage.pic.o src/gio/FileDescriptorBasedT.pic.o src/gio/FileIOStream.pic.o src/gio/NetworkService.pic.o src/gio/MountIF.pic.o src/gio/IOSchedulerJob.pic.o src/gio/FileAttributeMatcher.pic.o src/gio/MemoryOutputStream.pic.o src/gio/ContentType.pic.o src/gio/InetAddress.pic.o src/gio/SocketAddressEnumerator.pic.o src/gio/UnixMountEntry.pic.o src/gio/UnixInputStream.pic.o src/gio/DriveT.pic.o src/gio/DataInputStream.pic.o src/gio/SocketService.pic.o src/gio/LoadableIconT.pic.o src/gio/UnixConnection.pic.o src/gio/SocketConnection.pic.o src/gio/FileOutputStream.pic.o src/gio/AsyncResultT.pic.o src/gio/UnixFDList.pic.o src/gio/ConverterT.pic.o src/gio/Settings.pic.o src/gio/ProxyT.pic.o src/gio/InitableT.pic.o src/gio/AsyncInitableIF.pic.o src/gio/SocketClient.pic.o src/gio/SimplePermission.pic.o src/gio/MemoryInputStream.pic.o src/gio/SettingsBackend.pic.o src/gio/InitableIF.pic.o src/gio/AsyncResultIF.pic.o src/gio/VolumeT.pic.o src/gio/Vfs.pic.o src/gio/Resolver.pic.o src/gio/DBusProxy.pic.o src/gio/BufferedOutputStream.pic.o src/gio/DBusConnection.pic.o src/gio/DBusMethodInvocation.pic.o src/gio/DBusError.pic.o src/gio/DBusMessage.pic.o src/gio/File.pic.o src/gio/InetSocketAddress.pic.o src/gio/IOExtensionPoint.pic.o src/gio/ZlibCompressor.pic.o src/gio/TcpConnection.pic.o src/gio/ErrorGIO.pic.o src/gio/MountOperation.pic.o src/gio/FileDescriptorBasedIF.pic.o src/gio/SocketConnectable.pic.o src/gio/UnixCredentialsMessage.pic.o src/gio/IOExtension.pic.o src/gio/ThreadedSocketService.pic.o src/gio/Volume.pic.o src/gio/IconIF.pic.o src/gio/AppInfo.pic.o src/gio/Mount.pic.o src/gio/NetworkAddress.pic.o src/gio/UnixSocketAddress.pic.o src/gio/DBusUtilities.pic.o src/gio/AppLaunchContext.pic.o src/gio/SocketAddress.pic.o src/gio/FileIcon.pic.o src/gio/FilenameCompleter.pic.o src/gio/Permission.pic.o src/gio/FilterOutputStream.pic.o src/gio/AppInfoIF.pic.o src/gio/ConverterInputStream.pic.o src/gio/DesktopAppInfo.pic.o src/gio/VolumeMonitor.pic.o src/gio/InputStream.pic.o src/gio/UnixOutputStream.pic.o src/gio/DBusAuthObserver.pic.o src/gio/VolumeIF.pic.o src/gio/FilterInputStream.pic.o src/gio/DBusNames.pic.o src/gio/DBusServer.pic.o src/gio/ZlibDecompressor.pic.o src/gio/ProxyResolver.pic.o src/gio/DriveIF.pic.o src/gio/FileInputStream.pic.o src/gio/BufferedInputStream.pic.o src/gio/FileEnumerator.pic.o src/gio/ConverterIF.pic.o src/gio/SocketListener.pic.o src/gio/AsyncInitableT.pic.o src/gio/SimpleAsyncResult.pic.o src/gio/LoadableIconIF.pic.o src/gio/Proxy.pic.o src/gio/CharsetConverter.pic.o src/gdk/Pixmap.pic.o src/gdk/Selection.pic.o src/gdk/Window.pic.o src/gdk/ImageGdk.pic.o src/gdk/X11.pic.o src/gdk/RGB.pic.o src/gdk/Keymap.pic.o src/gdk/EventStruct.pic.o src/gdk/Display.pic.o src/gdk/Visual.pic.o src/gdk/Keysyms.pic.o src/gdk/Pixbuf.pic.o src/gdk/DragContext.pic.o src/gdk/Cursor.pic.o src/gdk/Screen.pic.o src/gdk/Rectangle.pic.o src/gdk/DisplayManager.pic.o src/gdk/AppLaunchContext.pic.o src/gdk/Colormap.pic.o src/gdk/GC.pic.o src/gdk/GdkCairo.pic.o src/gdk/Gdk.pic.o src/gdk/Device.pic.o src/gdk/RgbCmap.pic.o src/gdk/Drawable.pic.o src/gdk/Event.pic.o src/gdk/Threads.pic.o src/gdk/Testing.pic.o src/gdk/Bitmap.pic.o src/gdk/Font.pic.o src/gdk/Region.pic.o src/gdk/Input.pic.o src/gdk/Color.pic.o src/cairo/FontOption.pic.o src/cairo/Types.pic.o src/cairo/PdfSurface.pic.o src/cairo/ScaledFont.pic.o src/cairo/Pattern.pic.o src/cairo/Matrix.pic.o src/cairo/UserFontFace.pic.o src/cairo/Surface.pic.o src/cairo/Version.pic.o src/cairo/Context.pic.o src/cairo/PostScriptSurface.pic.o src/cairo/RecordingSurface.pic.o src/cairo/FontFace.pic.o src/cairo/Status.pic.o src/cairo/ImageSurface.pic.o src/cairo/SvgSurface.pic.o src/cairo/Device.pic.o src/cairo/Region.pic.o src/gtk/RcStyle.pic.o src/gtk/ToolItemGroup.pic.o src/gtk/Box.pic.o src/gtk/CellRendererPixbuf.pic.o src/gtk/TreeModelFilter.pic.o src/gtk/HRuler.pic.o src/gtk/CellEditableT.pic.o src/gtk/CellRendererSpin.pic.o src/gtk/MainWindow.pic.o src/gtk/IconSize.pic.o src/gtk/PrintOperation.pic.o src/gtk/IconSet.pic.o src/gtk/TreeModel.pic.o src/gtk/RecentChooserIF.pic.o src/gtk/Viewport.pic.o src/gtk/Selections.pic.o src/gtk/AccelGroup.pic.o src/gtk/Border.pic.o src/gtk/Version.pic.o src/gtk/PageSetupUnixDialog.pic.o src/gtk/TreeModelSort.pic.o src/gtk/Invisible.pic.o src/gtk/RecentManager.pic.o src/gtk/PrintSettings.pic.o src/gtk/TreeIterError.pic.o src/gtk/ColorSelection.pic.o src/gtk/Idle.pic.o src/gtk/GammaCurve.pic.o src/gtk/PrintOperationPreviewIF.pic.o src/gtk/AccelLabel.pic.o src/gtk/DragAndDrop.pic.o src/gtk/FileSelection.pic.o src/gtk/Scale.pic.o src/gtk/RecentChooserWidget.pic.o src/gtk/PrintJob.pic.o src/gtk/OffscreenWindow.pic.o src/gtk/TextChildAnchor.pic.o src/gtk/Separator.pic.o src/gtk/Testing.pic.o src/gtk/StandardEnumerations.pic.o src/gtk/VSeparator.pic.o src/gtk/IMContextSimple.pic.o src/gtk/FileChooserWidget.pic.o src/gtk/Spinner.pic.o src/gtk/TreeView.pic.o src/gtk/ItemFactory.pic.o src/gtk/TreeDragSourceT.pic.o src/gtk/HandleBox.pic.o src/gtk/PageSetup.pic.o src/gtk/IconTheme.pic.o src/gtk/SpinButton.pic.o src/gtk/RadioAction.pic.o src/gtk/Layout.pic.o src/gtk/RecentFilter.pic.o src/gtk/AboutDialog.pic.o src/gtk/LinkButton.pic.o src/gtk/TreeSortableT.pic.o src/gtk/Tooltips.pic.o src/gtk/IconView.pic.o src/gtk/UIManager.pic.o src/gtk/RadioMenuItem.pic.o src/gtk/ActionGroup.pic.o src/gtk/ToggleButton.pic.o src/gtk/Signals.pic.o src/gtk/TreeSelection.pic.o src/gtk/EditableIF.pic.o src/gtk/VScale.pic.o src/gtk/Statusbar.pic.o src/gtk/EntryBuffer.pic.o src/gtk/Bin.pic.o src/gtk/ButtonBox.pic.o src/gtk/ToolItem.pic.o src/gtk/FileChooserDialog.pic.o src/gtk/Menu.pic.o src/gtk/Range.pic.o src/gtk/StockItem.pic.o src/gtk/CellView.pic.o src/gtk/ToolButton.pic.o src/gtk/Progress.pic.o src/gtk/TearoffMenuItem.pic.o src/gtk/InputDialog.pic.o src/gtk/TreeDragDestT.pic.o src/gtk/AccelMap.pic.o src/gtk/BindingSet.pic.o src/gtk/ObjectGtk.pic.o src/gtk/OrientableT.pic.o src/gtk/RecentChooserT.pic.o src/gtk/ComboBox.pic.o src/gtk/TreeModelT.pic.o src/gtk/Curve.pic.o src/gtk/Widget.pic.o src/gtk/PrintUnixDialog.pic.o src/gtk/HScrollbar.pic.o src/gtk/MenuItem.pic.o src/gtk/ToggleToolButton.pic.o src/gtk/Toolbar.pic.o src/gtk/VRuler.pic.o src/gtk/HBox.pic.o src/gtk/TargetList.pic.o src/gtk/TreeNode.pic.o src/gtk/HPaned.pic.o src/gtk/CellLayoutIF.pic.o src/gtk/Builder.pic.o src/gtk/EditableT.pic.o src/gtk/Accessible.pic.o src/gtk/PaperSize.pic.o src/gtk/Fixed.pic.o src/gtk/Ruler.pic.o src/gtk/TreeSortableIF.pic.o src/gtk/CellEditableIF.pic.o src/gtk/CellRendererText.pic.o src/gtk/Style.pic.o src/gtk/CellRendererCombo.pic.o src/gtk/Misc.pic.o src/gtk/IMMulticontext.pic.o src/gtk/TextIter.pic.o src/gtk/VBox.pic.o src/gtk/WindowGroup.pic.o src/gtk/DrawingArea.pic.o src/gtk/TextView.pic.o src/gtk/FileChooserIF.pic.o src/gtk/EventBox.pic.o src/gtk/RecentInfo.pic.o src/gtk/Printer.pic.o src/gtk/GCs.pic.o src/gtk/CellRendererSpinner.pic.o src/gtk/Table.pic.o src/gtk/Label.pic.o src/gtk/Arrow.pic.o src/gtk/ScrolledWindow.pic.o src/gtk/SeparatorMenuItem.pic.o src/gtk/TreeViewColumn.pic.o src/gtk/RadioToolButton.pic.o src/gtk/TreePath.pic.o src/gtk/InfoBar.pic.o src/gtk/ScaleButton.pic.o src/gtk/Dialog.pic.o src/gtk/RadioButton.pic.o src/gtk/CheckButton.pic.o src/gtk/Scrollbar.pic.o src/gtk/MenuBar.pic.o src/gtk/IMContext.pic.o src/gtk/Image.pic.o src/gtk/TextTag.pic.o src/gtk/Action.pic.o src/gtk/TreeIter.pic.o src/gtk/PrintOperationPreviewT.pic.o src/gtk/FileChooserT.pic.o src/gtk/VButtonBox.pic.o src/gtk/Socket.pic.o src/gtk/SizeGroup.pic.o src/gtk/MenuToolButton.pic.o src/gtk/TreeDragSourceIF.pic.o src/gtk/Timeout.pic.o src/gtk/Assistant.pic.o src/gtk/IconFactory.pic.o src/gtk/Tooltip.pic.o src/gtk/Settings.pic.o src/gtk/CellLayoutT.pic.o src/gtk/RecentChooserDialog.pic.o src/gtk/Button.pic.o src/gtk/TextBuffer.pic.o src/gtk/Frame.pic.o src/gtk/CellRendererProgress.pic.o src/gtk/ToolShellT.pic.o src/gtk/ToggleAction.pic.o src/gtk/TextMark.pic.o src/gtk/VolumeButton.pic.o src/gtk/Container.pic.o src/gtk/StatusIcon.pic.o src/gtk/IconInfo.pic.o src/gtk/HSeparator.pic.o src/gtk/CellRenderer.pic.o src/gtk/BuildableT.pic.o src/gtk/Adjustment.pic.o src/gtk/TextAttributes.pic.o src/gtk/RecentChooserMenu.pic.o src/gtk/MessageDialog.pic.o src/gtk/TextTagTable.pic.o src/gtk/Item.pic.o src/gtk/ProgressBar.pic.o src/gtk/VScrollbar.pic.o src/gtk/BuildableIF.pic.o src/gtk/Expander.pic.o src/gtk/FontButton.pic.o src/gtk/SeparatorToolItem.pic.o src/gtk/MenuShell.pic.o src/gtk/Calendar.pic.o src/gtk/ListStore.pic.o src/gtk/Plug.pic.o src/gtk/Notebook.pic.o src/gtk/HScale.pic.o src/gtk/FileChooserButton.pic.o src/gtk/TreeModelIF.pic.o src/gtk/Paned.pic.o src/gtk/FontSelection.pic.o src/gtk/ComboBoxEntry.pic.o src/gtk/ColorSelectionDialog.pic.o src/gtk/EntryCompletion.pic.o src/gtk/Alignment.pic.o src/gtk/Window.pic.o src/gtk/CellRendererToggle.pic.o src/gtk/TreeStore.pic.o src/gtk/Entry.pic.o src/gtk/ToolShellIF.pic.o src/gtk/PrintContext.pic.o src/gtk/ActivatableT.pic.o src/gtk/CellEditable.pic.o src/gtk/Clipboard.pic.o src/gtk/ImageMenuItem.pic.o src/gtk/FontSelectionDialog.pic.o src/gtk/HButtonBox.pic.o src/gtk/RecentAction.pic.o src/gtk/TreeDragDestIF.pic.o src/gtk/PopupBox.pic.o src/gtk/OrientableIF.pic.o src/gtk/Types.pic.o src/gtk/ActivatableIF.pic.o src/gtk/CellRendererAccel.pic.o src/gtk/IconSource.pic.o src/gtk/ColorButton.pic.o src/gtk/ToolPalette.pic.o src/gtk/Main.pic.o src/gtk/CheckMenuItem.pic.o src/gtk/MountOperation.pic.o src/gtk/TreeRowReference.pic.o src/gtk/AspectFrame.pic.o src/gtk/FileFilter.pic.o src/gtk/VPaned.pic.o src/pango/PgGlyphString.pic.o src/pango/PgEngineLang.pic.o src/pango/PgGlyphItemIter.pic.o src/pango/PgFontFamily.pic.o src/pango/PgCoverage.pic.o src/pango/PgVersion.pic.o src/pango/PgAttribute.pic.o src/pango/PgFont.pic.o src/pango/PgFontMap.pic.o src/pango/PgAttributeList.pic.o src/pango/PgContext.pic.o src/pango/PgFontDescription.pic.o src/pango/PgFontFace.pic.o src/pango/PgItem.pic.o src/pango/PgTabArray.pic.o src/pango/PgGlyphItem.pic.o src/pango/PgLayoutLine.pic.o src/pango/PgEngine.pic.o src/pango/PgCairoFontMap.pic.o src/pango/PgFontsetSimple.pic.o src/pango/PgMatrix.pic.o src/pango/PgEngineShape.pic.o src/pango/PgAttributeIterator.pic.o src/pango/PgColor.pic.o src/pango/PgFontset.pic.o src/pango/PgLayoutIter.pic.o src/pango/PgScriptIter.pic.o src/pango/PgCairo.pic.o src/pango/PgMiscellaneous.pic.o src/pango/PgRenderer.pic.o src/pango/PgLayout.pic.o src/pango/PgScript.pic.o src/pango/PgLanguage.pic.o src/pango/PgVertical.pic.o src/pango/PgFontMetrics.pic.o src/glade/Glade.pic.o src/gobject/Enums.pic.o src/gobject/Flags.pic.o src/gobject/CClosure.pic.o src/gobject/Type.pic.o src/gobject/Closure.pic.o src/gobject/ParamSpec.pic.o src/gobject/TypeModule.pic.o src/gobject/Binding.pic.o src/gobject/TypePlugin.pic.o src/gobject/ObjectG.pic.o src/gobject/Boxed.pic.o src/gobject/ParamSpecPool.pic.o src/gobject/Value.pic.o src/gobject/ValueArray.pic.o src/gobject/Signals.pic.o src/gtkc/gdkpixbuf.pic.o src/gtkc/gobjecttypes.pic.o src/gtkc/paths.pic.o src/gtkc/gthread.pic.o src/gtkc/glib.pic.o src/gtkc/cairo.pic.o src/gtkc/giotypes.pic.o src/gtkc/atk.pic.o src/gtkc/gtktypes.pic.o src/gtkc/gthreadtypes.pic.o src/gtkc/gtk.pic.o src/gtkc/Loader.pic.o src/gtkc/all.pic.o src/gtkc/cairotypes.pic.o src/gtkc/pangotypes.pic.o src/gtkc/gdk.pic.o src/gtkc/glade.pic.o src/gtkc/glibtypes.pic.o src/gtkc/atktypes.pic.o src/gtkc/pango.pic.o src/gtkc/gladetypes.pic.o src/gtkc/gobject.pic.o src/gtkc/gio.pic.o src/gtkc/gdktypes.pic.o src/gtkc/gdkpixbuftypes.pic.o src/gdkpixbuf/PixbufAnimationIter.pic.o src/gdkpixbuf/PixbufSimpleAnimation.pic.o src/gdkpixbuf/PixbufAnimation.pic.o src/gdkpixbuf/PixbufFormat.pic.o src/gdkpixbuf/PixbufLoader.pic.o src/gdkpixbuf/Pixdata.pic.o src/gthread/Thread.pic.o src/gthread/Private.pic.o src/gthread/RWLock.pic.o src/gthread/Mutex.pic.o src/gthread/StaticMutex.pic.o src/gthread/StaticRecMutex.pic.o src/gthread/StaticPrivate.pic.o src/gthread/Cond.pic.o src/glib/ArrayG.pic.o src/glib/MessageLog.pic.o src/glib/GLib.pic.o src/glib/KeyFile.pic.o src/glib/HashTable.pic.o src/glib/ThreadPool.pic.o src/glib/Tuples.pic.o src/glib/TrashStack.pic.o src/glib/VariantType.pic.o src/glib/OptionGroup.pic.o src/glib/ListSG.pic.o src/glib/MappedFile.pic.o src/glib/SequenceIter.pic.o src/glib/Unicode.pic.o src/glib/Idle.pic.o src/glib/Cache.pic.o src/glib/ListG.pic.o src/glib/Base64.pic.o src/glib/MatchInfo.pic.o src/glib/ByteArray.pic.o src/glib/MainLoop.pic.o src/glib/IOChannel.pic.o src/glib/DateTime.pic.o src/glib/VariantIter.pic.o src/glib/QueueG.pic.o src/glib/Pattern.pic.o src/glib/ConstructionException.pic.o src/glib/OptionContext.pic.o src/glib/StringG.pic.o src/glib/Module.pic.o src/glib/DataList.pic.o src/glib/StringCompletion.pic.o src/glib/Node.pic.o src/glib/Atomic.pic.o src/glib/Hostname.pic.o src/glib/BookmarkFile.pic.o src/glib/Regex.pic.o src/glib/HashTableIter.pic.o src/glib/Child.pic.o src/glib/GException.pic.o src/glib/PtrArray.pic.o src/glib/Variant.pic.o src/glib/TimeZone.pic.o src/glib/Checksum.pic.o src/glib/RandG.pic.o src/glib/TimeVal.pic.o src/glib/Util.pic.o src/glib/Memory.pic.o src/glib/BBTree.pic.o src/glib/URI.pic.o src/glib/Date.pic.o src/glib/FileUtils.pic.o src/glib/Messages.pic.o src/glib/Source.pic.o src/glib/MemorySlice.pic.o src/glib/Directory.pic.o src/glib/SimpleXML.pic.o src/glib/VariantBuilder.pic.o src/glib/Str.pic.o src/glib/CharacterSet.pic.o src/glib/MemoryChunk.pic.o src/glib/Internationalization.pic.o src/glib/MainContext.pic.o src/glib/AsyncQueue.pic.o src/glib/WindowsUtils.pic.o src/glib/Sequence.pic.o src/glib/StringGChunk.pic.o src/glib/ErrorG.pic.o src/glib/Timer.pic.o src/glib/Spawn.pic.o src/glib/ScannerG.pic.o src/glib/Quark.pic.o src/glib/ShellUtils.pic.o src/glib/Dataset.pic.o src/glib/Timeout.pic.o src/glib/Allocator.pic.o src/glib/Relation.pic.o -of test.so


Code:
$ ldd libsrc/atk/Image.pic.so
   linux-vdso.so.1 =>  (0x00007fffd33ff000)
   libphobos2-ldc.so => /usr/lib64/libphobos2-ldc.so (0x00007f9b137a8000)
   libdruntime-ldc.so => /usr/lib/libdruntime-ldc.so (0x00007f9b13504000)
   libm.so.6 => /lib64/libm.so.6 (0x00007f9b1327f000)
   libdl.so.2 => /lib64/libdl.so.2 (0x00007f9b1307b000)
   librt.so.1 => /lib64/librt.so.1 (0x00007f9b12e73000)
   libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9b12c56000)
   libc.so.6 => /lib64/libc.so.6 (0x00007f9b128a0000)
   /lib64/ld-linux-x86-64.so.2 (0x000000317a000000)
   libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f9b1268b000)
Back to top
View user's profile Send private message
bioinfornatics



Joined: 22 Jun 2010
Posts: 90

PostPosted: Thu Jan 19, 2012 11:31 am    Post subject: Reply with quote

I think we could use now -shared flag both ldc and dmd have it

Code:
   $(DC) -shared $(output)$@.$(SO_VERSION) $^

instead of
Code:
   $(CC) -shared -Wl,-soname,$@.$(SO_VERSION) -o $@.$(SO_VERSION) $^


In more instead use:

Code:
output=-of$@


it is more flexible way to use

Code:
output=-of


and invoke: $(output)$@
Back to top
View user's profile Send private message
bioinfornatics



Joined: 22 Jun 2010
Posts: 90

PostPosted: Thu Jan 19, 2012 11:45 am    Post subject: Reply with quote

suggest this:

Code:
diff -up gtkd/GNUmakefile.diff2 gtkd/GNUmakefile
--- gtkd/GNUmakefile.diff2   2012-01-19 18:37:58.323640248 +0100
+++ gtkd/GNUmakefile   2012-01-19 18:39:44.863679795 +0100
@@ -25,11 +25,11 @@ endif
 ifeq ("$(DC)","gdc")
     DCFLAGS=-O2
     LINKERFLAG=-Xlinker
-    output=-o $@
+    output=-o
 else
     DCFLAGS=-O
     LINKERFLAG=-L
-    output=-of$@
+    output=-of
 endif
 
 ifneq (,$(findstring ldc,$(DC)))
@@ -162,27 +162,27 @@ $(LIBNAME_GSTREAMERD): $(LIBNAME_GTKD) $
 #######################################################################
 
 # When we get a shared standard lib use:
-# $(DC) $(LINKERFLAG)-shared $^ $(output)
+# $(DC) $(LINKERFLAG)-shared $^ $(output)$@
 
 $(SONAME_GTKD): IMPORTS=-Isrc
 $(SONAME_GTKD): $(PICOBJECTS_GTKD)
-   $(CC) -shared -Wl,-soname,$@.$(SO_VERSION) -o $@.$(SO_VERSION) $^
+   $(DC) -shared $(output)$@.$(SO_VERSION) $^
 
 $(SONAME_GTKDGL): IMPORTS=-Isrc -Isrcgl
 $(SONAME_GTKDGL): $(PICOBJECTS_GTKDGL)
-   $(CC) -shared -Wl,-soname,$@.$(SO_VERSION) -o $@.$(SO_VERSION) $^
+   $(DC) -shared $(output)$@.$(SO_VERSION) $^
 
 $(SONAME_GTKDSV): IMPORTS=-Isrc -Isrcsv
 $(SONAME_GTKDSV): $(PICOBJECTS_GTKDSV)
-   $(CC) -shared -Wl,-soname,$@.$(SO_VERSION) -o $@.$(SO_VERSION) $^
+   $(DC) -shared $(output)$@.$(SO_VERSION) $^
 
 $(SONAME_GTKDGDA): IMPORTS=-Isrc -Isrcgda
 $(SONAME_GTKDGDA): $(PICOBJECTS_GTKDGDA)
-   $(CC) -shared -Wl,-soname,$@.$(SO_VERSION) -o $@.$(SO_VERSION) $^
+   $(DC) -shared $(output)$@.$(SO_VERSION) $^
 
 $(SONAME_GTKDGSTREAMERD): IMPORTS=-Isrc -Isrcgstreamer
 $(SONAME_GTKDGSTREAMERD): $(PICOBJECTS_GTKDGSTREAMERD)
-   $(CC) -shared -Wl,-soname,$@.$(SO_VERSION) -o $@.$(SO_VERSION) $^
+   $(DC) -shared $(output)$@.$(SO_VERSION) $^
 
 #######################################################################
 
@@ -194,16 +194,16 @@ shared: LDFLAGS+= $(LINKERFLAG)-rpath=./
 
 $(BINNAME_DEMO): IMPORTS=-Isrc -Idemos/gtkD/TestWindow
 $(BINNAME_DEMO): $(LIBNAME_GTKD) $(OBJECTS_DEMO)
-   $(DC) $(OBJECTS_DEMO) $(output) $(LINKERFLAG)-L. $(LINKERFLAG)-lgtkd $(LDFLAGS)
+   $(DC) $(OBJECTS_DEMO) $(output)$@ $(LINKERFLAG)-L. $(LINKERFLAG)-lgtkd $(LDFLAGS)
 
 #######################################################################
 
 %.o : %.d
-   $(DC) $(DCFLAGS) $(IMPORTS) -c $< $(output)
+   $(DC) $(DCFLAGS) $(IMPORTS) -c $< $(output)$@
 
 %.pic.o : %.d
 ifneq (,$(findstring ldc,$(DC)))
-   $(DC) $(DCFLAGS) $(FPIC) $(IMPORTS) -c $< $(output)
+   $(DC) $(DCFLAGS) $(FPIC) $(IMPORTS) -c $< $(output)$@
 else
    $(error shared not suported with $(DC))
 endif


yum can to, do these thing:
Code:
if gdc
    shared=$(CC) -shared -Wl,-soname,$@.$(SO_VERSION) $(output)$@.$(SO_VERSION) $^
else
    shared=$(DC) -shared $(output)$@.$(SO_VERSION) $^


Note it seem gdc have too the -shared flag so this should works everywhere
Code:
$(DC) -shared $(output)$@.$(SO_VERSION) $^
Back to top
View user's profile Send private message
Mike Wey



Joined: 07 May 2007
Posts: 428

PostPosted: Sat Jan 21, 2012 9:09 am    Post subject: Reply with quote

I'll look into it. also see ticket #112
Back to top
View user's profile Send private message
Mike Wey



Joined: 07 May 2007
Posts: 428

PostPosted: Sun Jan 22, 2012 10:29 am    Post subject: Reply with quote

Using:

Code:
$(DC) -shared $(output)$@.$(SO_VERSION) $^


with ldc2 the resulting library is named liblibgtkd.so.1.5.1.so because ldc doesn't recognize it as a library name.

I've also been reading about naming conventions for shared libraries.
And from what i gather the soname should only include the major version number.

That would lead to a setup like this:
libgtkd.so -> libgtkd.so.1.5.1 (Used when linking.)
libgtkd.so.1 -> libgtkd.so.1.5.1 (Used by the application.)
libgtkd.so.1.5.1 (The actual library.)

This does mean the major version can't make braking changes. For gtkd it might be better to use libgtkd.so.1.5 as the soname. Allowing the user to install a bugfix release of gtkd without recompiling the application.

One problem with this and with using the complete version number is that different compiler versions aren't very compatible, so a application build with 2.057 and a library build with 2.058 will not work. And the application has to be rebuild anyway?
Back to top
View user's profile Send private message
Mike Wey



Joined: 07 May 2007
Posts: 428

PostPosted: Mon Jan 30, 2012 4:16 pm    Post subject: Reply with quote

Changed in svn r923.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> gtkD All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group