krb 1.21.2 build fails on macOS 14.2.1

Norm Green norm.green at gemtalksystems.com
Mon Jan 8 19:21:45 EST 2024


Specifying -U "_cc_initialize" moves the problem to run-time and the 
client executable fails to load with an unresolved symbol error.

The original workaround, -framework Kerberos, produces a functional 
final library when added to our relink code. I will stick with that for 
now given that we only use the Kerberos client and our overall Kerberos 
usage is limited to a small number of API calls.

Also I wasn't aware that library constructors could be a problem in pure 
C code (the build log shows only gcc is invoked, not g++).
Perhaps there's a way but I've only used them in C++ code.

Thanks again for your rapid response, I appreciate it.

Norm

On 1/8/2024 11:19 AM, Ken Hornstein wrote:
>> Thanks Ken. Adding "-framework Kerberos" to the linker line resolves the
>> issue.
>>
>> I am indeed building the static libs because I use them to create the
>> shared library later.
> I would caution you that this is not guaranteed to work; one thing
> that leaps out to me is that the shared library build uses -DSHARED
> when building library objects which seems to affect the way library
> constructors are built/used; it MAY work now, but there's no assurance
> it will continue to do so in the future.
>
> If your goal is to just to get everything to build and when you construct
> the shared library later you'll add a dependency to the Kerberos framework
> you could consider a linker option like -U cc_initialize (there might
> be more functions you'll need than that one, though).
>
> --Ken



More information about the krbdev mailing list