r_table_filename
] [-all_load] [-noall_load]
make[2]: *** [libnetcdff.la] Error 1
make[1]: *** [check] Error 2
make: *** [check-recursive] Error 1
Am I doing something wrong here?
Thanks,
Ed
--
Ed Hartnett -- e...@unidata.ucar.edu
___
http
Peter O'Gorman writes:
> On 01/07/2011 06:30 AM, Ed Hartnett wrote:
>
>> libtool: link: g95 -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o
>> .libs/libnetcdff.0.dylib .libs/fort-attio.o .libs/fort-control.o
>> .libs/fort-dim.o .libs/fort-genatt.o .lib
o `floor'
/machine/netcdf/trunk/nc_test/util.c:273: undefined reference to `floor'
collect2: ld returned 1 exit status
As I read the above, when make calles libtool, it has the -lm, but when
libtool calls gcc, the -lm is missing.
Any idea what I might be doing wrong here?
Thanks,
Howdy all!
I have found the reason for this problem - I did not correctly specify
the target!
Thanks,
Ed
--
Ed Hartnett -- e...@unidata.ucar.edu
___
https://lists.gnu.org/mailman/listinfo/libtool
gt; /data/gerry/apps/netcdf-4.1.3-rc1-snapshot2011051306/fortran'
> make[2]: *** [install-am] Error 2
> make[2]: Leaving directory
> /data/gerry/apps/netcdf-4.1.3-rc1-snapshot2011051306/fortran'
> make[1]: *** [install] Error 2
> make[
r any answers!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
her than the
> number of source and install trees.)
OK, I agree with this.
Thanks for the answers!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
omments on distributing shared libraries in binary would be most
appreciated. Most of our users have downloaded the binaries rather
than building from source, and we would like to be able to continue
doing that, if possible.
Thanks!
Ed
--
Ed Hartnett -- [EMAIL
this situation? That is, is
there any time on the users machine that the linker notices that he is
now linking to 1.0.0 instead of 0.0.0?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Bob Friesenhahn <[EMAIL PROTECTED]> writes:
> On Fri, 13 May 2005, Ed Hartnett wrote:
>>
>> How does the version number get used in this situation? That is, is
>> there any time on the users machine that the linker notices that he is
>> now linking to 1.0.0 inst
t idea just too crazy?
If it seems like a crazy question consider that most scientists
wouldn't really care all that much about exploding computers, as long
as the data files were not corrupted.
Thanks, your explanations are really clearing the mists around
li
Daniel Reed <[EMAIL PROTECTED]> writes:
> On Fri, 13 May 2005, Ed Hartnett wrote:
>> Bob Friesenhahn <[EMAIL PROTECTED]> writes:
>>> Yes. Unless it is explicitly deleted.
>> Suppose that we discover a bug which doesn't require any API change to
>>
Bob Friesenhahn <[EMAIL PROTECTED]> writes:
> On Fri, 13 May 2005, Ed Hartnett wrote:
>>
>> How does the version number get used in this situation? That is, is
>> there any time on the users machine that the linker notices that he is
>> now linking to 1.0.0 inst
x27;
Any comments about thie DLL process would be most helpful. I'm used to
getting one file: netcdf.dll - did I get something here that I can use
just by dropping it into a directory and then using a M$ IDE to
program with the DLL?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
e, the
putrefaction of the flesh, and the difficulty of maintaining (and
testing) multiple build environments.
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
ed from...
configure.ac:163: the top level
configure.ac:163: required file `config/ltmain.sh' not found
autoreconf: automake failed with exit status: 1
bash-2.05b$
Any thoughts on this?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
--tag=f77?
Is there some way to specify libtool parameters like --tag in the
makefile? Actually I can't seem to find any documentation of --tag at
all.
Thanks for any info!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailma
Bob Friesenhahn <[EMAIL PROTECTED]> writes:
> On Fri, 20 May 2005, Ed Hartnett wrote:
>>
>> The command works if I use --tag=f77 as a libtool option, but where in
>> my automake files can I specify a libtool option like --tag=f77?
>>
>> Is there some way t
there a way to put this argument in Makefile.am?
I am using the latest libtool distribution: 1.5.18, and reasonably
recent versions of autoconf and automake.
Please tell me I haven't done all this libtool conversion for
nothing. If I can't get our package to build on the Sun
ike? Libtool does not have
> native F95 (FC) support yet (might change in the near future), so
> do you use F77=f95 or do you use both f77 and f95 in your package?
>
OK, this all turned out to be an automake version problem after all.
Once I had all machines using version 1.9.5 of autom
in a way
that was sensible in the libtool universe.
Thanks,
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
avannah
> people for all of gnu.org[1], we will now enable moderation for all
> non-member posts, for all of the libtool lists[2], in accordance with
> maintainers best practices[3].
>
Great work Ralf!
Thanks for all the hard work you do!
Ed
-o $@ $(AM_FCFLAGS) $(FCFLAGS_f90)
`$(CYGPATH_W) '$<'`
.f90.lo:
$(LTFCCOMPILE) -c -o $@ $(FCFLAGS_f90) $<
as you suggested. Unfortunately, that didn't seem to help libtools tag
problem.
Thanks,
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Albert Chin <[EMAIL PROTECTED]> writes:
> On Tue, Nov 08, 2005 at 06:43:43AM -0700, Ed Hartnett wrote:
>> Ralf Wildenhues <[EMAIL PROTECTED]> writes:
>>
>> > I forgot one thing: If you're trying to use libtool with the FC (Fortran
>> > 90/95) int
Albert Chin <[EMAIL PROTECTED]> writes:
> On Tue, Nov 08, 2005 at 06:43:43AM -0700, Ed Hartnett wrote:
>> Ralf Wildenhues <[EMAIL PROTECTED]> writes:
>>
>> > I forgot one thing: If you're trying to use libtool with the FC (Fortran
>> > 90/95) int
rt xlf95 ifort ifc efc pgf95 lf95 gfortran frt pgf77
f77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 g77])
So here I call first AC_PROG_F77, then AC_PROG_FC.
If I just call AC_PROG_FC, the later, when I call AC_PROG_LIBTOOL it
will call AC_PROG_F77, ignoring the fact that FC is set to the fortran
Howdy all!
If I use libtool, I seem to get bash scripts. Does this mean my users
must have bash installed?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
ld be wonderful!
Thanks!
Ed
PS - I'm using libtool version 1.9f.
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Unfortunately I can't find
documentation of LTFCCOMPILE - is there an equivilant for linking?
This is with libtool 1.9f, BTW.
Thanks for any suggestions!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
x27;
libtoolize: `/home/ed/local/shecky/share/aclocal/ltoptions.m4'
libtoolize: `/home/ed/local/shecky/share/aclocal/ltversion.m4'
libtoolize: `/home/ed/local/shecky/share/aclocal/ltsugar.m4'
libtoolize: `/home/ed/local/shecky/share/aclocal/lt~obsolete.m4'
WHat is the d
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> Hi Ed,
>
> Ed Hartnett writes:
>>
>> When I run on AIX, unless I used --disable-shared, the link fails,
>> because it can't find the contents of one of the convenience
>> libraries.
>
> This is the
r the FCFLAGS_$SRCEXT which you'll still have to cater
> for).
I have indeed removed it, and everything works fine.
>
> Surely LTFCLINK should contain --tag=FC, too. This needs to be fixed in
> Automake.
>
Sorry, you'v
Howdy libtoolers!
If I am using libtool, do I need to find nm and ar myself on the build
system?
Or libtool will find these automatically, and fail if they are not
there?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org
!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
"Gary V. Vaughan" <[EMAIL PROTECTED]> writes:
> Ed Hartnett wrote:
>> Howdy all!
>>
>> I got the latest libtool from the CVS and installed it. Now when I
>> build my library, I get the following error:
>>
>> libtool: Version mismatch error
I think the documentation is really just fine. But there is a LOT of
detail, and it's hard to take it all in.
There are several tutorials out on the web, but they can be confusing
because they don't always represent the best way of doing things, as
they may be quite old.
Ed
--
Ed H
: skipping incompatible /usr/local/lib/libgcc_s.so when searching
for -lgcc_s
What makes ld skip these libraries?
The libaries are all recently created when I built gcc 4.1.0 on my
machine, including gfortran.
So what the heck is ld complaining about?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL
tatic, so I
understand that the user can always get static if that is what he
wants.)
Thanks for any helpful response...
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
turned 1 exit status
make[1]: *** [libnetcdf_c++.la] Error 1
make[1]: Leaving directory `/shecky/n3_new2/cxx'
make: *** [check-recursive] Error 1
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> Hi Ed,
>
> * Ed Hartnett wrote on Fri, May 05, 2006 at 02:43:42PM CEST:
>>
>> Building my package with libtool, I get the following error on my
>> linux box when I build, unless I use the --disable-shared flag, in
&g
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> Hi Ed,
>
> * Ed Hartnett wrote on Fri, May 05, 2006 at 09:30:02PM CEST:
>> Ralf Wildenhues <[EMAIL PROTECTED]> writes:
>> > * Ed Hartnett wrote on Fri, May 05, 2006 at 02:43:42PM CEST:
>> >>
>> &g
aths and some install directories that were deleted.
I reinstalled libtool and automake, and rebuilt everything, and the
problem disappeared.
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
reading that it was possible to generate dlls
which either did or did not depend on the cygwin dll being present on
the machine. True?
Thanks for any info!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
t is wrong. Does anyone have an easy
answer for me?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
ls me this:
checking for i686-pc-mingw32-xlc... gcc -no-cygwin
What is this i686-pc-mingw32-xlc business?
Thanks,
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
m
Files/ATI Technologies/ATI Control Panel:/cygdrive/c/Program
Files/Common Files/GTK/2.0/bin:/cygdrive/c/PROGRA~1/SecureFX
bash-3.1$
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Keith MARSHALL <[EMAIL PROTECTED]> writes:
> Ed Hartnett wrote:
>> When attempting to do a mingw cross-compile, the configure script
>> checks for a whole bunch of extra compilers. What's up with that?
>>
>> If I do this:
>>
>> bash-3.1$ ./confi
I understand
it.
My question is: when it comes to libraries, does size matter?
Any thoughts appreciated. Thanks.
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
#x27;s own copy of the foo() functions.
More information on shared libraries can be found at the following
external sites:
* The Program-Library HowTo, by David Wheeler.
* Wikipedia Library Entry
--
Ed Hartnett -- [EMAIL PROTECTED]
__
ed. And, even worse, they have to be changed in a
compiler-dependent way! (Which means each and every user would email
me and ask me how to do it for their compiler!)
Hopefully I am missing something here?
Thanks,
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
AQ...
Thanks again!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
ing?
How have other libraries which have switched to libtool handled this
transition?
Thanks,
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
hecky/n3_new/install/lib64
> |
> | Modules have been installed in:
> |/shecky/n3_new/install/lib/foopkg/
> [...]
>
> I don't see a trivial way to do this in Automake/Libtool yet, but I
> suppose it could be solved a
of
`atexit'
/mingw/lib/crt2.o(.text+0x2b0):crt1.c: first defined here
./.libs/libnetcdf.lib(.text+0x190):crtstuff.c: multiple definition of
`_onexit'
/mingw/lib/crt2.o(.text+0x2c0):crt1.c: first defined here
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> Hello Ed,
>
> * Ed Hartnett wrote on Tue, Dec 05, 2006 at 12:43:25AM CET:
>>
>> I am having a lot of trouble building my library with libtool under
>> mingw. I keep getting these errors relating to atexit. Can anyon
Ed Hartnett <[EMAIL PROTECTED]> writes:
> libtool: link: gcc -g -O2 -o .libs/t_nc.exe t_nc-t_nc.o
> ./.libs/libnetcdf.lib -L/usr/local/lib
Another clue - everything works if I change the above to:
gcc -g -O2 -o .libs/t_nc.exe t_nc-t_nc.o ./.libs/libnetcdf-0.dll
-L/usr/local/lib
T
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> * Ed Hartnett wrote on Thu, Dec 07, 2006 at 01:52:11PM CET:
>>
>> > libtool: link: gcc -g -O2 -o .libs/t_nc.exe t_nc-t_nc.o
>> > ./.libs/libnetcdf.lib -L/usr/local/lib
>>
>> Another clue - everything wor
hanks to Ralf Wildenhues for the
patches, and all the autotools help in general!)
Thanks Ralf!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
-Wl,LIBDIR' linker flag
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
--
But there does not end up being a libnetcdf.so file. Only a
libnet
and they should not be called again?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> * Mike Frysinger wrote on Tue, Jan 16, 2007 at 11:48:31PM CET:
>> On Tuesday 16 January 2007 17:30, Ed Hartnett wrote:
>> > When I call AC_PROG_LIBTOOL it seems to call AC_PROG_F77 and
>> > AC_PROG_FC, but I don
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> Hello Ed,
>
> * Ed Hartnett wrote on Wed, Jan 03, 2007 at 05:50:38PM CET:
>>
>> On our HPUX platform however, no libnetcdf.so file results. Yet the
>> build seems to work OK.
>
> The shared library
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> * Ed Hartnett wrote on Fri, Jan 19, 2007 at 03:02:01AM CET:
>> Ralf Wildenhues <[EMAIL PROTECTED]> writes:
>> > * Ed Hartnett wrote on Wed, Jan 03, 2007 at 05:50:38PM CET:
>> >>
>> >> On our HP
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> * Ed Hartnett wrote on Mon, Jan 22, 2007 at 09:31:36PM CET:
>>
>> I only have this one HPUX system to test on, and it's pretty out of
>> date, I suspect. But if I ask them to upgrade it, they'll probably
>&
t;
predeps=""
postdeps=""
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""
host: i686-pc-mingw32
enable shared libraries
disable static libraries
# libnetcdf.la - a libtool library file
# Generated by ltmain.sh (GNU libtool 1.2304 2006/05/24 11:54:59) 2.1a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libnetcdf-4.dll'
# Names of this library.
library_names='libnetcdf-4.dll libnetcdf.lib'
# The name of the static archive.
old_library=''
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libnetcdf.
current=4
age=0
revision=0
# Is this an already installed library?
installed=no
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/usr/local/lib'
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Ralf Wildenhues <[EMAIL PROTECTED]> writes:
> Hello Ed,
>
> * Ed Hartnett wrote on Fri, Dec 08, 2006 at 03:12:34AM CET:
>>
>> This must have been a Nd problem. When I upgraded to gcc 3.4.2
>> the whole problem went away.
>
> Hmm, that still worries me, plu
ch into this problem continues. If anyone can spot the
trouble, that would be helpful.
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
olete.m4'
What does this mean? I don't construct the aclocal.m4 file
anyway. I have an acinclude.m4 file...
Is this a harmless warning or is there a serious problem here?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
atic
build with the SUNW compilers.
Only the shared SUNW build is a problem.
If anyone could shed some light on this problem, that would be greatly
appreciated!
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
"Dan Nicholson" <[EMAIL PROTECTED]> writes:
> On Tue, Apr 22, 2008 at 4:24 AM, Ed Hartnett <[EMAIL PROTECTED]> wrote:
>> Howdy all!
>>
>> Firstly, thanks for developing libtool! It's really helpful!
>>
>> I am using it to distribut
been installed in:
/local/netcdf/n3_sellers/netcdf-3.6.3-snapshot2008050420/install/lib
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
`/upc/share/ed/local/DUDLEY/lib/libhdf5.la' was moved.
libtool: link: warning: library
`/upc/share/ed/local/DUDLEY/lib/libhdf5_hl.la' was moved.
libtool: link: warning: library
`/upc/share/ed/local/DUDLEY/lib/libhdf5.la' was moved.
-
Bob Friesenhahn <[EMAIL PROTECTED]> writes:
> On Mon, 5 May 2008, Ed Hartnett wrote:
>
>> Howdy all!
>>
>> Sometimes I get these warnings (see below), and I don't really get
>> what libtool is trying to tell me...
>
> It means that your hdf5 libr
n/man3/netcdf.3'
gmake[2]: Leaving directory
`/zasu/netcdf/n3_zasu/netcdf-3.6.3-snapshot2008051305/libsrc'
What's up here? Why does the .so.4 file get built, but never
installed?
Some other info about this platform:
bash$ ./libtool --features
host: powerpc-ibm-aix5.1.0.0
enable shared libraries
disable static libraries
bash$ gcc --version
gcc (GCC) 3.2
Any help would be appreciated.
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
problem of installing only the static
library.
(The .a file is always a static library, right?)
Thanks,
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
ortran compiler on a Linux system which is doing the
same thing: building --enable-shared, and seemingly working fine, but
in the end installing only a .a file.
Perhaps intel compilers also package their shared libraries in .a
files...
I know that macs use .dylib, HPs use .sl, (and I thought CYGWIN
0/3.2/../../..:/usr/lib:\
/lib
make check-TESTS
*** Testing C++ API with 2 different netCDF formats.
/bin/sh: 14312 Segmentation fault(coredump)
Is this expected? Or should I be able to build shared libraries with
version 3.2 of g++ and g77?
Thanks!
Ed
--
Ed Hartnett -- [EMAIL PROTECTED]
___
http://lists.gnu.org/mailman/listinfo/libtool
Bob Friesenhahn <[EMAIL PROTECTED]> writes:
> On Tue, 13 May 2008, Ed Hartnett wrote:
>>
>> I am the maintainer for a freeware scientific software library called
>> netcdf. There are C, Fortran, and C++ libraries.
>>
>> When building shared libraries
Bob Friesenhahn <[EMAIL PROTECTED]> writes:
> On Wed, 14 May 2008, Ed Hartnett wrote:
>>>>
>>>> Is this expected? Or should I be able to build shared libraries with
>>>> version 3.2 of g++ and g77?
>>>
>>> You have not given much to
ks,
Ed
configure.ac:
AC_INIT([small], [1.0], [EMAIL PROTECTED])
AC_CANONICAL_HOST
AM_DISABLE_SHARED
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign -Wall])
AC_CONFIG_SRCDIR([small.c])
LT_INIT()
AC_SUBST(ARFLAGS, ["$ARFLAGS"])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT()
; Libtool uses AR_FLAGS. I don't know why there's a discrepancy though...
>
> Cheers,
> Peter
Ah ha!
Thank you Peter. That works.
I will hit the sauna and stop by Old Chicago on the Perl St. Mall and
see what they have in the way of Swedish beer. If you were here, I
would buy
Bob Friesenhahn <[EMAIL PROTECTED]> writes:
> On Wed, 21 May 2008, Ed Hartnett wrote:
>>> From the info pages on Automake:
>>
>> `AR' and `ARFLAGS' default to `ar' and `cru' respectively; you can
>> override these two variables my settin
82 matches
Mail list logo