Boost logo

Boost-Build :

Subject: Re: [Boost-build] Linking problem in HP-UX with aCC
From: João Luís Pinto (joaoluispinto_at_[hidden])
Date: 2009-05-27 10:54:27


Jim,

Thanks for the hint. chatr was a lifesaver!

In fact the problem was, as you sugested, connected to the fact that a
3rd party lib had a broken build configuration, that accepted to
override -AA, but forced the linkage on libstd. A tweak on the build
system files removed the dependency on libstd, and therefore the
warning on the linkage of my components.

As for the second problem, I also managed to solve it: several libs
being built in the project were being declared as sources for the
component, due to a leftover set of changes in the jam file of the lib
when it was ported to win32. That's OK with win32-msvc and linux-gcc,
but the hupx aCC compiler integrates dependency information in the
linkage of libraries if they are compiled this way. So, the linker
(for the component) was essencialy complaining that it couldn'f find
the dependencies in the search dirs, even though the libs were
explicitely passed.

After adding a condicional for win32 shared (since the compilation of
DLL requires it), all is working fine.

Thanks for the help.

João

On Tue, May 26, 2009 at 5:58 PM, Jim Gallagher <jim_at_[hidden]> wrote:
> Joao,
>
> Are you linking in other libraries that may have been built with -AP?
> -AA is the default on ia64, unless -AP is explicitly supplied. You can
> use chatr or ldd to see the dependencies of shared libs.
>
> Jim
>
>
>> Date: Mon, 25 May 2009 17:10:55 +0100
>> From: Jo?o Lu?s Pinto <joaoluispinto_at_[hidden]>
>> Subject: [Boost-build] Linking problem in HP-UX with aCC
>>
>> Hi,
>>
>> I'm having two linking problems in a project build on a HP-UX machine.
>>
>> Versions:
>>
>> Boost.Build V2 (Milestone 12) [shipped with boost 1.39]
>> Boost.Jam 03.1.17
>>
>> aCC: HP C/aC++ B3910B A.06.16 [Nov 26 2007]
>>
>> HP-UX B.11.23 ia64
>>
>> It?s a 64 bit multi-threaded project, compiled with
>> "address-model=64". Linkage is performed with the folowing options,
>> set by boost-build:
>>
>> aCC -AA -g +DD64 -mt
>>
>> According to the aCC man page, the -AA option:
>>
>> "Turns on newly supported ANSI C++ Standard features such as namespace
>> std and the new C++ Standard Library. This option also implies -Aa.
>> Include paths are changed to include_std and library is libstd_v2."
>>
>> But I'm getting the following warning:
>>
>> ld: (Warning) Unsatisfied symbol "istream::do_ipfx(int)" in file
>> /usr/lib/hpux64/libstd.so.1
>>
>> that suggests libstd is being used instead of libstd_v2. Is this
>> expected? Is there a way to explicitely set the version of the stdlib
>> used, or do I have to "hammer in" the include path and the correct
>> library version using linker flags override?
>>
>> Also, while compiling a component that links to a library built inside
>> the same project, it is complaining that it cannot find that library,
>> even though several other executables of the project link with it
>> without any problems (in fact all other executables except a
>> particular one). The set of libraries is defined by an alias on the
>> Jamroot file. Any idea of what could be happening (I thought it might
>> be a problem related to the linker input line max size being overrun,
>> but I tried compilation with --abbreviate-paths with the same result).
>>
>> Thank you,
>>
>> Jo?o
>>
>>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
>

-- 
O Insurgente - http://oinsurgente.org
Small Brother - http://small-brother.blogspot.com

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk