On 7/9/23 12:18, Paolo Bonzini wrote:
-soname is not needed for runtime-loaded modules.  For example, Meson says:

             if not isinstance(target, build.SharedModule) or 
target.force_soname:
                 # Add -Wl,-soname arguments on Linux, -install_name on OS X
                 commands += linker.get_soname_args(
                     self.environment, target.prefix, target.name, 
target.suffix,
                     target.soversion, target.darwin_versions)

(force_soname is set is shared modules are linked into a build target, which is 
not
the case here.

Signed-off-by: Paolo Bonzini <[email protected]>
---
  contrib/plugins/Makefile | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contrib/plugins/Makefile b/contrib/plugins/Makefile
index b2b9db9f51a..db1bd04dfa6 100644
--- a/contrib/plugins/Makefile
+++ b/contrib/plugins/Makefile
@@ -37,7 +37,7 @@ all: $(SONAMES)
        $(CC) $(CFLAGS) -c -o $@ $<
lib%.so: %.o
-       $(CC) -shared -Wl,-soname,$@ -o $@ $^ $(LDLIBS)
+       $(CC) -shared -o $@ $^ $(LDLIBS)

This fixes on Darwin:

ld: unknown option: -soname
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [plugins] Error 2

Tested-by: Philippe Mathieu-Daudé <[email protected]>


Reply via email to