Error compile library on Linux.

classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|

Error compile library on Linux.

fredvs
Hello.

After successfully translate a useful unit into a universal library, i want to do the same with something bigger.

I have compile that unit into a Windows library.
Perfect, it compile and works.

But when i try to compile it on Linux a get that error message, even if i compile it with -fPIC parameter :

/usr/bin/ld: /home/fred/mylib/lib/x86_64-linux/thefile.o: réadressage de R_X86_64_32S en vertu de « .bss.n_u_$thefile_$$_usedfirstmessage » cannot be used when creation of shared object, recompile with -fPIC
/home/fred/fmylib/lib/x86_64-linux/thefile.o: error adding symbols: Bad value

What is wrong ?

Many thanks.


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

Fabio Luis Girardi
Same problem here when I try to compile a form on a library... I know that Forms on lib don't work yet because of other problems, not because linking problems.

I'm using Lazarus 1.3 and FPC 2.7.1 x64.

2014-03-11 11:15 GMT-03:00 Fred van Stappen <[hidden email]>:
Hello.

After successfully translate a useful unit into a universal library, i want to do the same with something bigger.

I have compile that unit into a Windows library.
Perfect, it compile and works.

But when i try to compile it on Linux a get that error message, even if i compile it with -fPIC parameter :

/usr/bin/ld: /home/fred/mylib/lib/x86_64-linux/thefile.o: réadressage de R_X86_64_32S en vertu de « .bss.n_u_$thefile_$$_usedfirstmessage » cannot be used when creation of shared object, recompile with -fPIC
/home/fred/fmylib/lib/x86_64-linux/thefile.o: error adding symbols: Bad value

What is wrong ?

Many thanks.


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal



--
The best regards,

Fabio Luis Girardi
PascalSCADA Project
http://sourceforge.net/projects/pascalscada
http://www.pascalscada.com

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs
In reply to this post by fredvs
Hello.

Here are some news from the front :

The fpc Library :

TheRevolutionaryLibrary library;
uses
TheBigUnit;
begin
end.

fpc compiler parameter => -fPIC.

=> Windows 32 bit => Compiles and works more than perfect.
=> Windows 64 bit => Compiles and works more than perfect.

=> Linux 32 bit => Compiles and works more than perfect.
=> Linux 64 bit => Not Compile and that error message:

/usr/bin/ld: /home/fred/mylib/lib/x86_64-linux/thefile.o: réadressage de R_X86_64_32S en vertu de « .bss.n_u_$thefile_$$_usedfirstmessage » cannot be used when creation of shared object, recompile with -fPIC
/home/fred/fmylib/lib/x86_64-linux/thefile.o: error adding symbols: Bad value

Who is the enemy ?

Many thanks.

PS : The library does not use any TForm nor any LCL units...

Fred.

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs

> /usr/bin/ld: /home/fred/mylib/lib/x86_64-linux/thefile.o: réadressage de
> R_X86_64_32S en vertu de « .bss.n_u_$thefile_$$_usedfirstmessage » cannot
> be used when creation of shared object, recompile with -fPIC/home>>  >/fred/fmylib/lib/x86_64-linux/thefile.o: error adding symbols: Bad value

Hello.

Cftr compliling a library on Linux 64 bit...( ok for Linux 32 bit, ok for Windows 32/64 bit)
Please, what is wrong, what must i change, where is the problem ?

Thanks

 



_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

Jonas Maebe-2

On 18 Mar 2014, at 12:52, Fred van Stappen wrote:


/usr/bin/ld: /home/fred/mylib/lib/x86_64-linux/thefile.o: réadressage de
R_X86_64_32S en vertu de « .bss.n_u_$thefile_$$_usedfirstmessage » cannot
be used when creation of shared object, recompile with -fPIC/home>>  >/fred/fmylib/lib/x86_64-linux/thefile.o: error adding symbols: Bad value

Cftr compliling a library on Linux 64 bit...( ok for Linux 32 bit, ok for Windows 32/64 bit)
Please, what is wrong, what must i change, where is the problem ?

We have several tests for libraries in our testsuite and they work fine for Linux/x86-64. It's quite possible that there is nevertheless a bug, but you will have to provide the source code required to reproduce it and compilation instructions, otherwise there is nothing we can do (as always).


Jonas

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs
> but you will have to provide the source code required to reproduce
> it and compilation instructions, otherwise there is nothing we can do (as always).
> Jonas

Hum, ok (but you promise not to tell, it is still a secret...)  ;-)

The project-units :

>> https://github.com/graemeg/fpGUI/tree/develop

The code of the library :

>> library fpGUI;
>> uses

>>  fpg_main; => error while compiling on Linux 64 bit.

>>  begin
>>  end.

Thanks.

Fred.

PS : Tested with Python and fpGUI library on Windows 32/64 => It works !


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs
In reply to this post by Jonas Maebe-2
> It's quite possible that there is nevertheless a bug, but you will have to
> provide the source code required to reproduce it and compilation
> instructions, otherwise there is nothing we can do (as always).

Hum, not too much answer here... ;-(

Re-resumed :
Units/Project => https://github.com/graemeg/fpGUI/tree/develop

Download it by Clicking on  "Download ZIP".

Then in /fpGUI/src/corelib/

Try to compile that simple library with Linux 64 bit :

>> library fpGUI;
>> uses

>>  fpg_main; => error while compiling on Linux 64 bit.

>>  begin
>>  end.

Compiler parameters (need parh of fpGUI too) :
 -MObjFPC -Scghi -CX -Os1 -Xs -XX -vewnhi -fPIC -Fu

Many thanks.

Fred

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

Jonas Maebe-2

On 20/03/14 12:59, Fred van Stappen wrote:
> It's quite possible that there is nevertheless a bug, but you will have to
> provide the source code required to reproduce it and compilation
> instructions, otherwise there is nothing we can do (as always).

Hum, not too much answer here... ;-(
Indeed, not all bug reports are followed up within two days. Please file a bug report at bugs.freepascal.org so it doesn't get forgotten. And if you or anyone else has a smaller example that demonstrates the problem, that can also help with getting it fixed more quickly.


Jonas

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs

>> Indeed, not all bug reports are followed up within two days...
 
Yep, i feel better now  ;-)

Thanks Jonas.


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs
In reply to this post by Jonas Maebe-2
Yep, many thanks for the attention  you give :
=> http://bugs.freepascal.org/view.php?id=25901

Hum, Marco explained :

>> Works fine for me if I compile everything with those parameters
>> (and -trunk) I assume you compiled with the build.sh and then
>> didn't clean up properly when you started adding parameters,
>> thus leaving units compiled without the pic params.


May i ask what parameters you have used, i cannot do it compile ?
I will then compile via terminal.
Many thanks.

Fred

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs

>> Works fine for me if I compile everything with those parameters
>> (and -trunk) I assume you compiled with the build.sh and then
>> didn't clean up properly when you started adding parameters,
>> thus leaving units compiled without the pic params.


Hello.
I have re-created a new fpc.cfg and now...
it compiles and works perfectly in Linux 64 with fpc 2.6.2 and 2.7.1 ! Fantastique... Here, demo of fpGUI library with Python (Windows 32 and Linux 64)

=> All is working, (even Style Manager, onClick, form-state, etc,...).
You only need to have Python installed.
Run the Python script and see... => https://sites.google.com/site/biotray/fpGUIlib_py.zip
PS : Many thanks to help and, once again, viva fpc ;-)
PS2 : What a marvelous prove, with fpGUI library, that fpc is the Master.
PS3 : Im very, very, very happy. Tetra thanks.

Fred


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

Fabio Luis Girardi
You recompiled the FPC? Or simple change of fpc.cfg options solves your problem?


2014-03-22 21:55 GMT-03:00 Fred van Stappen <[hidden email]>:

Hello.
I have re-created a new fpc.cfg and now...
it compiles and works perfectly in Linux 64 with fpc 2.6.2 and 2.7.1 ! Fantastique... Here, demo of fpGUI library with Python (Windows 32 and Linux 64)

=> All is working, (even Style Manager, onClick, form-state, etc,...).
You only need to have Python installed.
Run the Python script and see... => https://sites.google.com/site/biotray/fpGUIlib_py.zip
PS : Many thanks to help and, once again, viva fpc ;-)
PS2 : What a marvelous prove, with fpGUI library, that fpc is the Master.
PS3 : Im very, very, very happy. Tetra thanks.

Fred


_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal



--
The best regards,

Fabio Luis Girardi
PascalSCADA Project
http://sourceforge.net/projects/pascalscada
http://www.pascalscada.com

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs
>> You recompiled the FPC? Or simple change of fpc.cfg options solves your problem?

Oops, sorry for the delay.

I only change  fpc.cfg options and it solves the problem...

Hum, im really sorry but i do not know what changes do the trick. (i did not save the old fpc.cfg-not-working, so, i cannot compare).

Fred
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs
In reply to this post by fredvs
@ Fabio Luis Girardi :

Here my working fpc.cfg
_________________________________________________________
#
# Config file generated by fpcmkcfg on 5-3-14 - 21:58:27
# Example fpc.cfg for Free Pascal Compiler
#

# ----------------------
# Defines (preprocessor)
# ----------------------

#
# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
#
# -d is the same as #DEFINE
# -u is the same as #UNDEF
#

#
# Some examples (for switches see below, and the -? helppages)
#
# Try compiling with the -dRELEASE or -dDEBUG on the commandline
#

# For a release compile with optimizes and strip debuginfo
#IFDEF RELEASE
  -O2
  -Xs
  #WRITE Compiling Release Version
#ENDIF

# For a debug version compile with debuginfo and all codegeneration checks on
#IFDEF DEBUG
  -gl
  -Crtoi
  #WRITE Compiling Debug Version
#ENDIF

# assembling
#ifdef darwin
# use pipes instead of temporary files for assembling
-ap
# path to Xcode 4.3+ utilities (no problem if it doesn't exist)
-FD/Applications/Xcode.app/Contents/Developer/usr/bin
#endif

# ----------------
# Parsing switches
# ----------------

# Pascal language mode
#      -Mfpc      free pascal dialect (default)
#      -Mobjfpc   switch some Delphi 2 extensions on
#      -Mdelphi   tries to be Delphi compatible
#      -Mtp       tries to be TP/BP 7.0 compatible
#      -Mgpc      tries to be gpc compatible
#      -Mmacpas   tries to be compatible to the macintosh pascal dialects
#
# Turn on Object Pascal extensions by default
#-Mobjfpc

# Assembler reader mode
#      -Rdefault  use default assembler
#      -Ratt      read AT&T style assembler
#      -Rintel    read Intel style assembler
#
# All assembler blocks are AT&T styled by default
#-Ratt

# Semantic checking
#      -S2        same as -Mobjfpc
#      -Sc        supports operators like C (*=,+=,/= and -=)
#      -Sa        include assertion code.
#      -Sd        same as -Mdelphi
#      -Se<x>     error options. <x> is a combination of the following:
#         <n> : compiler stops after <n> errors (default is 1)
#         w   : compiler stops also after warnings
#         n   : compiler stops also after notes
#         h   : compiler stops also after hints
#      -Sg        allow LABEL and GOTO
#      -Sh        Use ansistrings
#      -Si        support C++ styled INLINE
#      -Sk        load fpcylix unit
#      -SI<x>     set interface style to <x>
#         -SIcom    COM compatible interface (default)
#         -SIcorba  CORBA compatible interface
#      -Sm        support macros like C (global)
#      -So        same as -Mtp
#      -Sp        same as -Mgpc
#      -Ss        constructor name must be init (destructor must be done)
#      -Sx        enable exception keywords (default in Delphi/ObjFPC modes)
#
# Allow goto, inline, C-operators, C-vars
-Sgic

# ---------------
# Code generation
# ---------------

# Uncomment the next line if you always want static/dynamic units by default
# (can be overruled with -CD, -CS at the commandline)
#-CS
#-CD

# Set the default heapsize to 8Mb
#-Ch8000000

# Set default codegeneration checks (iocheck, overflow, range, stack)
#-Ci
#-Co
#-Cr
#-Ct

# Optimizer switches
# -Os        generate smaller code
# -Oa=N      set alignment to N
# -O1        level 1 optimizations (quick optimizations, debuggable)
# -O2        level 2 optimizations (-O1 + optimizations which make debugging more difficult)
# -O3        level 3 optimizations (-O2 + optimizations which also may make the program slower rather than faster)
# -Oo<x>     switch on optimalization x. See fpc -i for possible values
# -OoNO<x>   switch off optimalization x. See fpc -i for possible values
# -Op<x>     set target cpu for optimizing, see fpc -i for possible values

#ifdef darwin
#ifdef cpui386
-Cppentiumm
-Oppentiumm
#endif
#endif

# -----------------------
# Set Filenames and Paths
# -----------------------

# Both slashes and backslashes are allowed in paths

# path to the messagefile, not necessary anymore but can be used to override
# the default language
#-Fr/usr/lib/fpc/$fpcversion/msg/errore.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errorn.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errores.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errord.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errorr.msg

# searchpath for units and other system dependent things
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl

#IFDEF FPCAPACHE_1_3
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd13/
#ELSE
#IFDEF FPCAPACHE_2_0
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd20
#ELSE
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd22
#ENDIF
#ENDIF

# searchpath for fppkg user-specific packages
-Fu~/.fppkg/lib/fpc/$fpcversion/units/$FPCTARGET/*

# path to the gcclib
#ifdef cpui386
-Fl/usr/lib/gcc/x86_64-linux-gnu/4.8
#endif
#ifdef cpux86_64
-Fl/usr/lib/gcc/x86_64-linux-gnu/4.8
#endif

# searchpath for libraries
#-Fl/usr/lib/fpc/$fpcversion/lib
#-Fl/lib;/usr/lib
-Fl/usr/lib/fpc/$fpcversion/lib/$FPCTARGET

# searchpath for tools
-FD/usr/lib/fpc/$fpcversion/bin/$FPCTARGET

#IFNDEF CPUI386
#IFNDEF CPUAMD64
#DEFINE NEEDCROSSBINUTILS
#ENDIF
#ENDIF

#IFNDEF Linux
#DEFINE NEEDCROSSBINUTILS
#ENDIF

# binutils prefix for cross compiling
#IFDEF FPC_CROSSCOMPILING
#IFDEF NEEDCROSSBINUTILS
  -XP$FPCTARGET-
#ENDIF
#ENDIF


# -------------
# Linking
# -------------

# generate always debugging information for GDB (slows down the compiling
# process)
#      -gc        generate checks for pointers
#      -gd        use dbx
#      -gg        use gsym
#      -gh        use heap trace unit (for memory leak debugging)
#      -gl        use line info unit to show more info for backtraces
#      -gv        generates programs tracable with valgrind
#      -gw        generate dwarf debugging info
#
# Enable debuginfo and use the line info unit by default
#-gl

# always pass an option to the linker
#-k-s

# Always strip debuginfo from the executable
-Xs


# -------------
# Miscellaneous
# -------------

# Write always a nice FPC logo ;)
# -l

# Verbosity
#      e : Show errors (default)       d : Show debug info
#      w : Show warnings               u : Show unit info
#      n : Show notes                  t : Show tried/used files
#      h : Show hints                  s : Show time stamps
#      i : Show general info           q : Show message numbers
#      l : Show linenumbers            c : Show conditionals
#      a : Show everything             0 : Show nothing (except errors)
#      b : Write file names messages   r : Rhide/GCC compatibility mode
#          with full path              x : Executable info (Win32 only)
#      v : write fpcdebug.txt with     p : Write tree.log with parse tree
#          lots of debugging info
#
# Display Info, Warnings and Notes
-viwn
# If you don't want so much verbosity use
#-vw
#include /etc/fpc-fpg.cfg
_______________________________________________________

Here my fpc-fpg.cfg ( see end of fpc.cfg, i added it for fpGUI ) :

# Begin fpGUI-block
# search-path for fpGUI units and includes
-Fu/home/fred/fpGUI-develop/src
-Fi/home/fred/fpGUI-develop/src
-Fu/home/fred/fpGUI-develop/src/corelib
-Fu/home/fred/fpGUI-develop/src/corelib/x11
-Fi/home/fred/fpGUI-develop/src/corelib/x11
-Fu/home/fred/fpGUI-develop/src/corelib/render/software
-Fu/home/fred/fpGUI-develop/src/gui
-Fu/home/fred/fpGUI-develop/src/gui/db
-Fu/home/fred/fpGUI-develop/src/reportengine
# object pascal dialect and compil options
-MObjFPC
-Schi
-vewnhi
-Xs
-XX
-fPIC
# End fpGUI-blockg :  

# Begin fpGUI-block
# search-path for fpGUI units and includes
-Fu/home/fred/fpGUI-develop/src
-Fi/home/fred/fpGUI-develop/src
-Fu/home/fred/fpGUI-develop/src/corelib
-Fu/home/fred/fpGUI-develop/src/corelib/x11
-Fi/home/fred/fpGUI-develop/src/corelib/x11
-Fu/home/fred/fpGUI-develop/src/corelib/render/software
-Fu/home/fred/fpGUI-develop/src/gui
-Fu/home/fred/fpGUI-develop/src/gui/db
-Fu/home/fred/fpGUI-develop/src/reportengine
# object pascal dialect and compil options
-MObjFPC
-Schi
-vewnhi
-Xs
-XX
-fPIC
# End fpGUI-block
_________________________________________________

And here the compiler parameters used : (for fpGUI library)

 -MObjFPC -Scghi -CX -Xs -XX -vewnhi -Fi/home/fred/fpGUIlib/src/units -Fu/home/fred/fpGUI-develop/lib/x86_64-linux -Fu/usr/share/lazarus/1.2.0/packager/units/x86_64-linux -Fu/home/fred/fpGUIlib/src/ -FU/home/fred/fpGUIlib/src/units/ -olibfpgui.so

_________________________________________________




Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

Fabio Luis Girardi
No problem... what's your fpc version? I'll compare with the right version of FPC here.


2014-03-26 14:17 GMT-03:00 fredvs <[hidden email]>:
@ Fabio Luis Girardi :

Here my working *fpc.cfg*
_________________________________________________________
#
# Config file generated by fpcmkcfg on 5-3-14 - 21:58:27
# Example fpc.cfg for Free Pascal Compiler
#

# ----------------------
# Defines (preprocessor)
# ----------------------

#
# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
#
# -d is the same as #DEFINE
# -u is the same as #UNDEF
#

#
# Some examples (for switches see below, and the -? helppages)
#
# Try compiling with the -dRELEASE or -dDEBUG on the commandline
#

# For a release compile with optimizes and strip debuginfo
#IFDEF RELEASE
  -O2
  -Xs
  #WRITE Compiling Release Version
#ENDIF

# For a debug version compile with debuginfo and all codegeneration checks
on
#IFDEF DEBUG
  -gl
  -Crtoi
  #WRITE Compiling Debug Version
#ENDIF

# assembling
#ifdef darwin
# use pipes instead of temporary files for assembling
-ap
# path to Xcode 4.3+ utilities (no problem if it doesn't exist)
-FD/Applications/Xcode.app/Contents/Developer/usr/bin
#endif

# ----------------
# Parsing switches
# ----------------

# Pascal language mode
#      -Mfpc      free pascal dialect (default)
#      -Mobjfpc   switch some Delphi 2 extensions on
#      -Mdelphi   tries to be Delphi compatible
#      -Mtp       tries to be TP/BP 7.0 compatible
#      -Mgpc      tries to be gpc compatible
#      -Mmacpas   tries to be compatible to the macintosh pascal dialects
#
# Turn on Object Pascal extensions by default
#-Mobjfpc

# Assembler reader mode
#      -Rdefault  use default assembler
#      -Ratt      read AT&T style assembler
#      -Rintel    read Intel style assembler
#
# All assembler blocks are AT&T styled by default
#-Ratt

# Semantic checking
#      -S2        same as -Mobjfpc
#      -Sc        supports operators like C (*=,+=,/= and -=)
#      -Sa        include assertion code.
#      -Sd        same as -Mdelphi
#      -Se<x>     error options. <x> is a combination of the following:
#         <n> : compiler stops after <n> errors (default is 1)
#         w   : compiler stops also after warnings
#         n   : compiler stops also after notes
#         h   : compiler stops also after hints
#      -Sg        allow LABEL and GOTO
#      -Sh        Use ansistrings
#      -Si        support C++ styled INLINE
#      -Sk        load fpcylix unit
#      -SI<x>     set interface style to <x>
#         -SIcom    COM compatible interface (default)
#         -SIcorba  CORBA compatible interface
#      -Sm        support macros like C (global)
#      -So        same as -Mtp
#      -Sp        same as -Mgpc
#      -Ss        constructor name must be init (destructor must be done)
#      -Sx        enable exception keywords (default in Delphi/ObjFPC modes)
#
# Allow goto, inline, C-operators, C-vars
-Sgic

# ---------------
# Code generation
# ---------------

# Uncomment the next line if you always want static/dynamic units by default
# (can be overruled with -CD, -CS at the commandline)
#-CS
#-CD

# Set the default heapsize to 8Mb
#-Ch8000000

# Set default codegeneration checks (iocheck, overflow, range, stack)
#-Ci
#-Co
#-Cr
#-Ct

# Optimizer switches
# -Os        generate smaller code
# -Oa=N      set alignment to N
# -O1        level 1 optimizations (quick optimizations, debuggable)
# -O2        level 2 optimizations (-O1 + optimizations which make debugging
more difficult)
# -O3        level 3 optimizations (-O2 + optimizations which also may make
the program slower rather than faster)
# -Oo<x>     switch on optimalization x. See fpc -i for possible values
# -OoNO<x>   switch off optimalization x. See fpc -i for possible values
# -Op<x>     set target cpu for optimizing, see fpc -i for possible values

#ifdef darwin
#ifdef cpui386
-Cppentiumm
-Oppentiumm
#endif
#endif

# -----------------------
# Set Filenames and Paths
# -----------------------

# Both slashes and backslashes are allowed in paths

# path to the messagefile, not necessary anymore but can be used to override
# the default language
#-Fr/usr/lib/fpc/$fpcversion/msg/errore.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errorn.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errores.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errord.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errorr.msg

# searchpath for units and other system dependent things
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl

#IFDEF FPCAPACHE_1_3
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd13/
#ELSE
#IFDEF FPCAPACHE_2_0
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd20
#ELSE
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd22
#ENDIF
#ENDIF

# searchpath for fppkg user-specific packages
-Fu~/.fppkg/lib/fpc/$fpcversion/units/$FPCTARGET/*

# path to the gcclib
#ifdef cpui386
-Fl/usr/lib/gcc/x86_64-linux-gnu/4.8
#endif
#ifdef cpux86_64
-Fl/usr/lib/gcc/x86_64-linux-gnu/4.8
#endif

# searchpath for libraries
#-Fl/usr/lib/fpc/$fpcversion/lib
#-Fl/lib;/usr/lib
-Fl/usr/lib/fpc/$fpcversion/lib/$FPCTARGET

# searchpath for tools
-FD/usr/lib/fpc/$fpcversion/bin/$FPCTARGET

#IFNDEF CPUI386
#IFNDEF CPUAMD64
#DEFINE NEEDCROSSBINUTILS
#ENDIF
#ENDIF

#IFNDEF Linux
#DEFINE NEEDCROSSBINUTILS
#ENDIF

# binutils prefix for cross compiling
#IFDEF FPC_CROSSCOMPILING
#IFDEF NEEDCROSSBINUTILS
  -XP$FPCTARGET-
#ENDIF
#ENDIF


# -------------
# Linking
# -------------

# generate always debugging information for GDB (slows down the compiling
# process)
#      -gc        generate checks for pointers
#      -gd        use dbx
#      -gg        use gsym
#      -gh        use heap trace unit (for memory leak debugging)
#      -gl        use line info unit to show more info for backtraces
#      -gv        generates programs tracable with valgrind
#      -gw        generate dwarf debugging info
#
# Enable debuginfo and use the line info unit by default
#-gl

# always pass an option to the linker
#-k-s

# Always strip debuginfo from the executable
-Xs


# -------------
# Miscellaneous
# -------------

# Write always a nice FPC logo ;)
# -l

# Verbosity
#      e : Show errors (default)       d : Show debug info
#      w : Show warnings               u : Show unit info
#      n : Show notes                  t : Show tried/used files
#      h : Show hints                  s : Show time stamps
#      i : Show general info           q : Show message numbers
#      l : Show linenumbers            c : Show conditionals
#      a : Show everything             0 : Show nothing (except errors)
#      b : Write file names messages   r : Rhide/GCC compatibility mode
#          with full path              x : Executable info (Win32 only)
#      v : write fpcdebug.txt with     p : Write tree.log with parse tree
#          lots of debugging info
#
# Display Info, Warnings and Notes
-viwn
# If you don't want so much verbosity use
#-vw
#include /etc/fpc-fpg.cfg
_______________________________________________________

*Here my fpc-fpg.cfg ( see end of fpc.cfg, i added it for fpGUI ) :*

# Begin fpGUI-block
# search-path for fpGUI units and includes
-Fu/home/fred/fpGUI-develop/src
-Fi/home/fred/fpGUI-develop/src
-Fu/home/fred/fpGUI-develop/src/corelib
-Fu/home/fred/fpGUI-develop/src/corelib/x11
-Fi/home/fred/fpGUI-develop/src/corelib/x11
-Fu/home/fred/fpGUI-develop/src/corelib/render/software
-Fu/home/fred/fpGUI-develop/src/gui
-Fu/home/fred/fpGUI-develop/src/gui/db
-Fu/home/fred/fpGUI-develop/src/reportengine
# object pascal dialect and compil options
-MObjFPC
-Schi
-vewnhi
-Xs
-XX
-fPIC
# End fpGUI-blockg :

# Begin fpGUI-block
# search-path for fpGUI units and includes
-Fu/home/fred/fpGUI-develop/src
-Fi/home/fred/fpGUI-develop/src
-Fu/home/fred/fpGUI-develop/src/corelib
-Fu/home/fred/fpGUI-develop/src/corelib/x11
-Fi/home/fred/fpGUI-develop/src/corelib/x11
-Fu/home/fred/fpGUI-develop/src/corelib/render/software
-Fu/home/fred/fpGUI-develop/src/gui
-Fu/home/fred/fpGUI-develop/src/gui/db
-Fu/home/fred/fpGUI-develop/src/reportengine
# object pascal dialect and compil options
-MObjFPC
-Schi
-vewnhi
-Xs
-XX
-fPIC
# End fpGUI-block
_________________________________________________

*And here the compiler parameters used :* (for fpGUI library)

 -MObjFPC -Scghi -CX -Xs -XX -vewnhi -Fi/home/fred/fpGUIlib/src/units
-Fu/home/fred/fpGUI-develop/lib/x86_64-linux
-Fu/usr/share/lazarus/1.2.0/packager/units/x86_64-linux
-Fu/home/fred/fpGUIlib/src/ -FU/home/fred/fpGUIlib/src/units/ -olibfpgui.so

_________________________________________________








-----
Many thanks ;-)
--
View this message in context: http://free-pascal-general.1045716.n5.nabble.com/Error-compile-library-on-Linux-tp5718562p5718765.html
Sent from the Free Pascal - General mailing list archive at Nabble.com.
_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal



--
The best regards,

Fabio Luis Girardi
PascalSCADA Project
http://sourceforge.net/projects/pascalscada
http://www.pascalscada.com

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

fredvs
> No problem... what's your fpc version? I'll compare with the right version of FPC here.

Hum, now it compiles the library using same fpc.cfg with fpc 2.6.2. and 2.7.1 perfectly (the size of library is > with fpc 2.7.1).

It seems to me that the trick was to add lot of -Fu and -Fi search-paths for each unit and include used.

Also, delete all the *.ppu and *.o of previous compile.

And if still problem, try to compile each unit separately and compile the final library unit in last-end.

Hope it help...
Many thanks ;-)
Reply | Threaded
Open this post in threaded view
|

Re: Error compile library on Linux.

Ewald-2

On 26 Mar 2014, at 23:15, fredvs wrote:
>
> Also, delete all the *.ppu and *.o of previous compile.

FWIW: Removing all of them when you get weird errors always does the trick here. You can probably count yourself lucky as I once had a project with an outdated .o file that *did* link. Took me an our or so to track that one down :-)

--
Ewald

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal