Giter Site home page Giter Site logo

Comments (9)

jondegenhardt avatar jondegenhardt commented on August 14, 2024

Thank you for this tip. I will do this.

from tsv-utils.

jacob-carlborg avatar jacob-carlborg commented on August 14, 2024

BTW, DMD does not support static linking. It doesn't support the TLS model that is required, as far as I can see.

from tsv-utils.

jondegenhardt avatar jondegenhardt commented on August 14, 2024

Thanks again for raising this topic. I was wondering how broadly these pre-built binaries would work.

I'm trying the -static flag now. There's a bit to it. As you indicate, DMD does not support. And, LDC2 fails if it is used on OS X, so it's necessary to customize builds. Trying it on a Linux box, I'm getting a warning message indicating:

warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

I'm guessing this indicates there could still be issues. Do you thoughts on this? Also, can you list a specific linux distribution where the pre-built binaries I created won't work? I can try to get access to a box if I know what to try.

from tsv-utils.

jacob-carlborg avatar jacob-carlborg commented on August 14, 2024

macOS doesn't support static linking libc. But macOS doesn't have the same problem of binary compatibility as Linux does, only one distrubtion 😃. If you want to support older versions of you can use the environment variable MACOSX_DEPLOYMENT_TARGET=<version>, where <version> is the oldest version you want to support. D applications require 10.7 or later. I'm not sure if environment variables are supported in Dub. If the environment variable doesn't work you can use this Dub configuration:

"lflags-osx": ["-macosx_version_min", "10.7", "-lcrt1.o"]

An easy way to check if it properly reads the deployment target is to use version 10.6, which should give an error due to TLS is not supported.

As far as static linking on Linux. It's not possible to statically link 100% of glibc due to gethostbyname (as you noticed), but I'm pretty sure you don't need that. Assuming you need to get the hostname, it should work. To fully statically link libc you need another version than glibc, like musl or similar. Although D doesn't support musl right now. The runtime depends on a non-standard backtrace function that only exists in glibc.

The pre-built binaries don't work on CentOS 6.

from tsv-utils.

jondegenhardt avatar jondegenhardt commented on August 14, 2024

Okay, so what you are saying is that it should fine to ignore the warning messages about gethostbyname for Linux. Thanks for all this help. It'll probably be a day before I get back to this, but I'll post an update to this thread when I've got the binaries updated.

from tsv-utils.

jacob-carlborg avatar jacob-carlborg commented on August 14, 2024

Okay, so what you are saying is that it should fine to ignore the warning messages about gethostbyname for Linux

Yes.

from tsv-utils.

jondegenhardt avatar jondegenhardt commented on August 14, 2024

The pre-compiled binaries are now statically linked (version v1.1.10). If you get a chance to try them on CentOS 6 or other systems let me know if they work properly.

from tsv-utils.

jacob-carlborg avatar jacob-carlborg commented on August 14, 2024

Thanks. I'll give them a try.

from tsv-utils.

jacob-carlborg avatar jacob-carlborg commented on August 14, 2024

Works now. Thanks.

from tsv-utils.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.