LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   How are these files compiled ? (https://www.linuxquestions.org/questions/linux-software-2/how-are-these-files-compiled-4175586322/)

Glenn D. 08-05-2016 12:39 AM

How are these files compiled ?
 
Hello,
How are these files compiled ?

Thanks
--Glenn

394 Jan 9 2009 Makefile.am
33088 Aug 24 2015 Makefile.in
13597 Jan 9 2009 busy.c
1409 Jan 9 2009 busy.h
4368 Jan 9 2009 cp.c
1559 Jan 9 2009 create.c
1263 Jan 9 2009 detect
1736 Jan 9 2009 ln.c
1048 Jan 9 2009 ls.c
761 Jan 9 2009 misc.c
1419 Jan 9 2009 rm.c
917 Jan 9 2009 stat.c
1158 Aug 24 2015 trunc.c

# make
make: *** No targets specified and no makefile found. Stop.

# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.8 --enable-linux-futex --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux
Thread model: posix
gcc version 4.8.1 20130909 [gcc-4_8-branch revision 202388] (SUSE Linux)


# make --help
Usage: make [options] [target] ...
Options:
-b, -m Ignored for compatibility.
-B, --always-make Unconditionally make all targets.
-C DIRECTORY, --directory=DIRECTORY
Change to DIRECTORY before doing anything.
-d Print lots of debugging information.
--debug[=FLAGS] Print various types of debugging information.
-e, --environment-overrides
Environment variables override makefiles.
--eval=STRING Evaluate STRING as a makefile statement.
-f FILE, --file=FILE, --makefile=FILE
Read FILE as a makefile.
-h, --help Print this message and exit.
-i, --ignore-errors Ignore errors from recipes.
-I DIRECTORY, --include-dir=DIRECTORY
Search DIRECTORY for included makefiles.
-j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.
-k, --keep-going Keep going when some targets can't be made.
-l [N], --load-average[=N], --max-load[=N]
Don't start multiple jobs unless load is below N.
-L, --check-symlink-times Use the latest mtime between symlinks and target.
-n, --just-print, --dry-run, --recon
Don't actually run any recipe; just print them.
-o FILE, --old-file=FILE, --assume-old=FILE
Consider FILE to be very old and don't remake it.
-p, --print-data-base Print make's internal database.
-q, --question Run no recipe; exit status says if up to date.
-r, --no-builtin-rules Disable the built-in implicit rules.
-R, --no-builtin-variables Disable the built-in variable settings.
-s, --silent, --quiet Don't echo recipes.
-S, --no-keep-going, --stop
Turns off -k.
-t, --touch Touch targets instead of remaking them.
-v, --version Print the version number of make and exit.
-w, --print-directory Print the current directory.
--no-print-directory Turn off -w, even if it was turned on implicitly.
-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
Consider FILE to be infinitely new.
--warn-undefined-variables Warn when an undefined variable is referenced.

astrogeek 08-05-2016 01:21 AM

That looks like an incomplete set of automake files to me.

You have Makefile.am and a Makefile.in, but I think those are not useful without a configure.ac.

You will need the GNU Automake/Autotools package for your distro installed. That is not required to run the Makefile, but it is required to create the Makefile from the Makefile.am.

Check the GNU automake manuals and look at the diagram on the right side of this page to see how those are used to create a configure script and Makefile which you can then use to compile the executable.

It has been a while since I wrote a set from scratch, but I think that you need a configure.ac and Makefile.am, then run autoreconf --install, which invokes automake (among other things) to produce the Makefile.in, used by the configure script to create the Makefile itself.

You might be able to construct a useful Makefile manually from the Makefile.am, but it was obviously intended to be used in another context.

Michael Uplawski 08-05-2016 01:45 AM

Quote:

Originally Posted by astrogeek (Post 5586294)
Check the GNU automake manuals and look at the diagram on the right side of this page to see how those are used to create a configure script and Makefile which you can then use to compile the executable.

Sure.

But with a source package, intended for configuration and compilation, there are usually installation instructions found in the top level directory. From the OP's explanation I cannot deduce if he has run ./configure prior calling make. PSE also try to locate the installation instructions in a file, usually called INSTALL or in the REAME. Otherwise, if you see a web-page offering the download link for your package, the compile-instructions are found somewhere, else and if nothing is said about how to compile your package, let it be and complain to the author.

If all goes well, instead, run configure once with the --help argument. Pipe it through more or through less to see the possible options.

Then use the paco Package Organizer or see my blog about that topic.

astrogeek 08-05-2016 01:52 AM

Quote:

Originally Posted by Michael Uplawski (Post 5586302)
But with a source package, intended for configuration and compilation, there are usually installation instructions found in the top level directory. From the OP's explanation I cannot deduce if he has run ./configure prior calling make.

That is why I said it looks incomplete - there is no configure script there to run, and no configure.ac for making one!

Michael Uplawski 08-05-2016 02:02 AM

Quote:

Originally Posted by astrogeek (Post 5586303)
That is why I said it looks incomplete - there is no configure script there to run, and no configure.ac for making one!

Okayokayokay... But there should be someone to tell, someone that we must ask just one question: “How should this be done”. That is why I said it. “We” cannot possibly solve the problem.

Glenn D. 08-05-2016 05:04 AM

Hello,

I got source from
https://sourceforge.net/projects/rei...s-1.1.0.tar.gz
-unpacked to /tmp

trying to compile all the /tmp/reiser4progs-1.1.0/demos/

-steps done
# cd /tmp/reiser4progs-1.1.0/
# ll
total 1378
-rw-r--r-- 1 root users 390 Jan 9 2009 AUTHORS
-rw-r--r-- 1 root users 66 Jan 9 2009 BUGS
-rw-r--r-- 1 root users 2891 Jan 9 2009 COPYING
-rw-r--r-- 1 root users 3549 Jun 29 2014 CREDITS
-rw-r--r-- 1 root users 4916 Jan 9 2009 CUSTOM_INSTALL_README
-rw-r--r-- 1 root users 5654 Aug 24 2015 ChangeLog
-rw-r--r-- 1 root users 7831 Jan 9 2009 INSTALL
-rw-r--r-- 1 root users 334 Jan 9 2009 INSTALL_README
-rw-r--r-- 1 root users 647 Jan 9 2009 Makefile.am
-rw-r--r-- 1 root users 28128 Aug 24 2015 Makefile.in
-rw-r--r-- 1 root users 0 Jan 17 2009 NEWS
-rw-r--r-- 1 root users 1079 Jan 9 2009 README
-rw-r--r-- 1 root users 114 Jan 9 2009 THANKS
-rw-r--r-- 1 root users 824 Jan 9 2009 TODO
-rw-r--r-- 1 root users 349349 Aug 24 2015 aclocal.m4
-rwxr-xr-x 1 root users 3642 Jan 9 2009 compile
-rwxr-xr-x 1 root users 43632 Jan 9 2009 config.guess
-rw-r--r-- 1 root users 5835 Jun 9 2014 config.h.in
-rwxr-xr-x 1 root users 31175 Jan 9 2009 config.sub
-rwxr-xr-x 1 root users 506260 Aug 24 2015 configure
-rw-r--r-- 1 root users 17184 Aug 24 2015 configure.in
drwxr-xr-x 2 root users 376 Aug 5 18:11 demos
-rwxr-xr-x 1 root users 15205 Jan 9 2009 depcomp
drwxr-xr-x 2 root users 256 Aug 5 18:11 doc
drwxr-xr-x 6 root users 208 Aug 5 18:11 include
-rwxr-xr-x 1 root users 9212 Jan 9 2009 install-sh
drwxr-xr-x 2 root users 184 Aug 5 18:11 libaux
drwxr-xr-x 2 root users 280 Aug 5 18:11 libmisc
drwxr-xr-x 2 root users 712 Aug 5 18:11 libreiser4
-rw-r--r-- 1 root users 2735 Jan 9 2009 libreiser4.m4
drwxr-xr-x 2 root users 648 Aug 5 18:11 librepair
-rw-r--r-- 1 root users 283474 Apr 8 2013 ltmain.sh
-rwxr-xr-x 1 root users 10678 Jan 9 2009 missing
-rw-r--r-- 1 root users 687 Jan 9 2009 one_touch_install
drwxr-xr-x 15 root users 424 Aug 5 18:11 plugin
drwxr-xr-x 6 root users 216 Aug 5 18:11 progs
-rw-r--r-- 1 root users 1830 Aug 24 2015 reiser4progs.spec
-rw-r--r-- 1 root users 1834 Jan 9 2009 reiser4progs.spec.in
-rwxr-xr-x 1 root users 482 Jan 9 2009 run-ldconfig

tmp/reiser4progs-1.1.0 # ./configure
checking build system type... x86_64-suse-linux
checking host system type... x86_64-suse-linux
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
/tmp/reiser4progs-1.1.0/missing: Unknown `--is-lightweight' option
Try `/tmp/reiser4progs-1.1.0/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for uuid_generate in -luuid... no
configure: WARNING: libuuid could not be found which is required for the --with-uuid

checking for readline in -lreadline... no
configure: WARNING: GNU Readline could not be found which is required for the --with-readline

checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking whether ln -s works... yes
checking whether make sets $(MAKE)... (cached) yes
checking for ranlib... ranlib
checking for gawk... (cached) gawk
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/x86_64-suse-linux/bin/ld
checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-suse-linux file names to x86_64-suse-linux format... func_convert_file_noop
checking how to convert x86_64-suse-linux file names to toolchain format... func_convert_file_noop
checking for /usr/x86_64-suse-linux/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... (cached) ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for ANSI C header files... (cached) yes
checking printf.h usability... yes
checking printf.h presence... yes
checking for printf.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking mntent.h usability... yes
checking mntent.h presence... yes
checking for mntent.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/mount.h usability... yes
checking sys/mount.h presence... yes
checking for sys/mount.h... yes
checking sys/vfs.h usability... yes
checking sys/vfs.h presence... yes
checking for sys/vfs.h... yes
checking for unistd.h... (cached) yes
checking whether byte ordering is bigendian... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for size_t... yes
checking for struct stat.st_rdev... yes
checking whether gcc needs -traditional... no
checking whether lstat correctly handles trailing slash... yes
checking whether stat accepts an empty string... no
checking for register_printf_function... yes
checking for statfs... yes
checking for getmntent... yes
checking for hasmntopt... yes
checking for memset... yes
checking for strerror... yes
checking for strtol... yes
checking for time... yes
checking for uname... yes
checking for sysconf... yes
checking whether -falign-loops works... yes
checking whether -Wuninitialized works... yes
checking whether -Wno-unused-parameter works... yes
checking whether -Wredundant-decls works... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
configure: WARNING: Can't detect right _FILE_OFFSET_BITS. Will be forced to 64bit.
checking size of off_t... 8
checking for aal_device_open in -laal... no
configure: error: libaal not found; install libaal available at http://www.namesys.com/snapshots

libaal installed:
--------------------

# rpm -qa | grep -i libaal
libaal-1_0-6-1.0.6-106.1.x86_64

# find . |grep -i libaal
./usr/lib64/libaal-1.0.so.6.0.0
./usr/lib64/libaal-1.0.so.6
./usr/share/doc/packages/libaal-1_0-6
./usr/share/doc/packages/libaal-1_0-6/COPYING

# ll /usr/lib64/libaal-1.0.so.6.0.0 /usr/lib64/libaal-1.0.so.6
lrwxrwxrwx 1 root root 19 Jul 19 16:52 /usr/lib64/libaal-1.0.so.6 -> libaal-1.0.so.6.0.0
-rwxr-xr-x 1 root root 35576 Sep 10 2014 /usr/lib64/libaal-1.0.so.6.0.0

/tmp/reiser4progs-1.1.0 # ./configure
.
.
.
checking whether -falign-loops works... yes
checking whether -Wuninitialized works... yes
checking whether -Wno-unused-parameter works... yes
checking whether -Wredundant-decls works... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
configure: WARNING: Can't detect right _FILE_OFFSET_BITS. Will be forced to 64bit.
checking size of off_t... 8
checking for aal_device_open in -laal... no
configure: error: libaal not found; install libaal available at http://www.namesys.com/snapshots

Thanks
--Glenn

hazel 08-05-2016 06:15 AM

Did you run ldconfig after installing the library?

Michael Uplawski 08-05-2016 07:16 AM

Quote:

Originally Posted by hazel (Post 5586375)
Did you run ldconfig after installing the library?

:thumbsup: an evergreen.

keefaz 08-05-2016 07:39 AM

Maybe header files for libaal are missing (libaal-dev or something)

Edit:

Btw reiser4progs is available as package for opensuse, no need to compile it (and manage future upgrades)

http://software.opensuse.org/package...m=reiser4progs

hazel 08-05-2016 11:01 AM

Quote:

Originally Posted by keefaz (Post 5586405)
Maybe header files for libaal are missing (libaal-dev or something)

In Fedora, it would be libaal-devel. You're right of course. The configure script looks for headers, not the libraries themselves. Now why didn't I think of that?

Michael Uplawski 08-05-2016 02:05 PM

Quote:

Originally Posted by hazel (Post 5586506)
In Fedora, it would be libaal-devel. You're right of course. The configure script looks for headers, not the libraries themselves. Now why didn't I think of that?

Because the OP has reacted to the error message and you just took into account that the library had been installed alright. Now how do I know? With Debian it would have been the same.

astrogeek 08-05-2016 02:22 PM

Quote:

Originally Posted by Glenn D. (Post 5586285)
Hello,
How are these files compiled ?

394 Jan 9 2009 Makefile.am
33088 Aug 24 2015 Makefile.in
13597 Jan 9 2009 busy.c
1409 Jan 9 2009 busy.h
4368 Jan 9 2009 cp.c
1559 Jan 9 2009 create.c
1263 Jan 9 2009 detect
1736 Jan 9 2009 ln.c
1048 Jan 9 2009 ls.c
761 Jan 9 2009 misc.c
1419 Jan 9 2009 rm.c
917 Jan 9 2009 stat.c
1158 Aug 24 2015 trunc.c

Becomes...

Quote:

Originally Posted by Glenn D. (Post 5586355)
I got source from
https://sourceforge.net/projects/rei...s-1.1.0.tar.gz
-unpacked to /tmp

trying to compile all the /tmp/reiser4progs-1.1.0/demos/

-steps done

So it was an XY problem.

Also, please use [CODE]...[/CODE] tags around pasted code to make the walls of text more readable.


All times are GMT -5. The time now is 05:53 PM.