Sponsored Content
Full Discussion: Makefile Mix for C and C++
Top Forums Shell Programming and Scripting Makefile Mix for C and C++ Post 302703905 by hfbrando on Thursday 20th of September 2012 02:05:24 PM
Old 09-20-2012
Thank you DGPickett for your answer.
I've been looking for the use of extern in ANSI C, and I tried several ways to code it:
Code:
extern "C++" {
      #include <opencv2/features2d/features2d.hpp>
}

But it didn't work (the compiler threw errors because of the quotation marks or the braces... I changed them by parenthesis and simple quotation marks, but It didn't work. After I found a post (*) that say that C does not define linkage to any other language (but C++ does).
So I tried with extern "C" in the c++ library, but when I compiled it threw the same compilation error...

ardrone_testing_tool.c: (.text+0x1212) : undefined reference to `cvSURFParams'
ardrone_testing_tool.c: (.text+0x126f) : undefined reference to `cvExtractSURF'


In that link, they say also that I could try with the compiler g++ (I should fix the errors I put in the last post).
What do you think about that?

Concerning the compiler, you mean to take out '.cpp' in INTERNAL_SOURCE_EXTENSIONS, and after put the .hpp file in a separated folder and call the g++ just for that folder and generate the .o ?
How can I put all the .o files all together ?

Is it OK what I'm saying? Sorry if I'm saying something that is wrong, I started just some days ago with the GNU makefile.

Thanks a lot.

(*) The forum does not allow to put links before 5 posts. Write on google "linking a C++ library to a C program" bytes
 

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to grep mix of numbers and systemdate?

Hi Guys, i'm beginner in UNIX commands, need some help on this simple question: I need to make a shell script to move files to another directory, the criterias are : 1. the range of 4 last digit of the file name is 0100-0199 2. move all files that processed daily (let's say today is... (2 Replies)
Discussion started by: saltshaker
2 Replies

2. AIX

mix fc and tape devices

I have a problem with some partitions. In one of them I have this two fiber channel. lsdev -Cc adapter ent0 Available 03-08 10/100/1000 Base-TX PCI-X Adapter (14106902) fcs0 Available 04-08 FC Adapter fcs1 Available 05-08 FC Adapter ide0 Defined 07-08 ATA/IDE... (0 Replies)
Discussion started by: lo-lp-kl
0 Replies

3. UNIX for Advanced & Expert Users

Makefile problem - How to run module load in a Makefile

Hi, I'm trying to run the module load command in a Makefile and i'm getting the following error: make: module: command not found Why is this? Is there any way to run this command in a Makefile? NOTE: command - module load msjava/sunjdk/1.5.0 works fine outside of the Makefile (2 Replies)
Discussion started by: hernandinho
2 Replies

4. Solaris

ZFS Pool Mix-up

Hi all I plan to install Solaris 10U6 on some SPARC server using ZFS as root pool, whereas I would like to keep the current setup done by VxVM: - 2 internal disks: c0t0d0 and c0t1d0 - bootable root-volume (mirrored, both disks) - 1 non-mirrored swap slice - 1 non-mirrored slices for Live... (1 Reply)
Discussion started by: blicki
1 Replies

5. Shell Programming and Scripting

How to mix the contents of 2 files into a new file?

Hello Everybody! My question is how can I mix for example file_a with file_b in the following method: After 2 lines of file_a put 2 lines from file_b to file_c. For example: file_a: 1 2 3 4 5 6 file_b: 11 22 (7 Replies)
Discussion started by: Levi85
7 Replies

6. Homework & Coursework Questions

Help with Simple Multi-Level Makefile (Extremely New at Makefile)

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Basically, the prompt is make a makefile with various sub makefiles in their respective subdirectories. All code... (1 Reply)
Discussion started by: Tatl
1 Replies

7. Programming

makefile for mix of C and C++ modules

I am trying to come up with a makefile where the target is linked with object files produced by C and C++ sources. My setup is Ubuntu/gcc: $ uname -a Linux srvr1 2.6.24-24-server #1 SMP Fri Sep 18 17:24:10 UTC 2009 i686 GNU/Linux gcc version 4.2.4 $ cat main.cpp #include <iostream>... (6 Replies)
Discussion started by: migurus
6 Replies

8. AIX

Mix LDAP and LOCAL user on AIX

Hello, I'm currently trying to mix local and LDAP users on an AIX 7.1. I've triied many things. My LDAP Server in on a CentOS - OpenLDAP (which works fine with linux). I'm currently stuck on AIX at how to declare LDAP AND Local users. Here's what i did : /usr/sbin/mksecldap -c -h 'ldap03'... (15 Replies)
Discussion started by: AIX_user_324891
15 Replies
mkmf(1) 						      General Commands Manual							   mkmf(1)

NAME
mkmf - make a makefile SYNOPSIS
makefile] template] language] [macroname=value ...] DESCRIPTION
The command creates a makefile that informs the command how to construct and maintain programs and libraries (see make(1)). After gather- ing up all source code file names in the current working directory and inserting them into the makefile, scans source code files for included files and generates dependency information that is appended to the makefile. Source code files are identified by their file name suffixes. recognizes the following suffixes: C C++ FORTRAN Include files Pascal include files Lex or Lisp Object files Pascal Ratfor Assembler Yacc The command checks for an existing makefile before creating one. If no option is present, tries the makefiles and respectively. After the makefile has been created, arbitrary changes can be made using a text editor. can also be used to re-edit the macro definitions in the makefile, regardless of changes that may have been made since it was created. By default, creates a program makefile. To create a makefile that handles libraries, the option must be used. Make Requests Given a makefile created by recognizes the following requests: Compile and load a program or library. Remove all object and core files. Remove all files that can be regenerated. Update included file dependencies in a makefile. List the names of the source code files on standard output. Extract all object files from the library and place them in the same directory as the source code files. The library is not altered. Print an index of functions on standard output. Compile and load the program or library and move it to its destination directory. Print source code files on standard output. Create a tags file for the editor (see ex(1) and ctags(1)), for C, Pascal, and Fortran source code files. Recompile only if there are source code files that are newer than the program or library, link and install the program or library. Several requests can be given simultaneously. For example, to (1) compile and link a program, (2) move the program to its destination directory, and (3) remove any unnecessary object files, use: Macro Definitions understands the following macro definitions: C compiler flags. After searching for included files in the directory currently being processed, searches in directories named in com- piler options and then in the directory. Location of If the macro or environment variable is defined, searches for included files in instead of C++ compiler flags. After searching for included files in the directory currently being processed, searches in directories named in com- piler options and then in the directory, followed by the directory. Directory where the program or library is to be installed. List of included files external to the current directory. automatically updates this macro definition in the makefile if dependency information is being generated. Fortran compiler flags. After searching for included files in the directory currently being processed, searches in directories named in com- piler options, then in the directory. List of included files in the current directory. automatically updates this macro definition in the makefile. Installation program name. Link editor name. Link editor flags. Library name. This macro also implies the option. List of libraries needed by the link editor to resolve external references. Makefile name. List of object files. automatically updates this macro definition in the makefile. Program name. List of source code files. automatically updates this macro definition in the makefile. List of additional file name suffixes for to know about. List of included files found in the directory hierarchy. automatically updates this macro definition in the makefile if dependency information is being generated. If is omitted from the makefile, does not generate dependencies. Both these and any other macro definitions already within the makefile can be replaced by definitions on the command line in the form For example, to change the C compiler flags and the program name, type the following line: Note that macro definitions such as with blanks in them must be enclosed in double quote (") marks. Environment The environment is read by All variables are assumed to be macro definitions with the exception of and Environment variables are processed after command line macro definitions and the macro definitions in a makefile. The option forces the environment to override the macro def- initions in a makefile. File Name Suffixes can recognize additional file name suffixes, or ignore ones that it already recognizes, by specifying suffix descriptions in the macro def- inition. Each suffix description takes the form where t is a character indicating the contents of the file = source file, = object file, = header file, = executable file) and I is an optional character indicating the include syntax for header files = C syntax, = C syntax plus the addition of as a standard search directory, = Fortran and Ratfor syntax, = Pascal syntax). The following list shows the default con- figuration for C C++ Fortran Include files Pascal include files Lex or Lisp Object files Pascal Ratfor Assembler Yacc For example, to change the object file suffix to undefine the Pascal include file suffix, and prevent Fortran files from being scanned for included files, the macro definition could be: Include Statement Syntax The syntax of include statements for C, C++, Fortran, and Pascal source code are of the form: C/C++: where must be the first character in the line. Fortran: where must be the first character in the line. Alternatively, the can be omitted if the include statement starts in column 7. In either case the trailing can be omitted. Pascal: where must be the first character in the line and the trailing is optional. User-defined Templates If cannot find a makefile within the current directory, it normally uses one of the standard makefile templates, or in unless the user has alternative or template files in a directory where is the absolute path name of the directory assigned to the environment variable. Options recognizes the following options: Include source files beginning with a in the makefile. Suppress `` makefile message. Turn off scanning of source code for files. Old dependency information is left untouched in the makefile. Environment variables override macro definitions within makefiles. Specify an alternative makefile file name. The default file name is Prompt the user for the name of the program or library and the directory where it is to be installed. If a carriage-return is typed in response to each of these queries, assumes that the default program name is or the default library name is and the destination directory is the current directory. Force the makefile to be a library makefile. Specify an alternative makefile template path name. The path name can be relative or absolute. Specify an alternative language-specific makefile template. The default language is C and the corresponding program and library makefile templates are and respectively. looks for these templates in or DIAGNOSTICS
Exit status 0 is normal. Exit status 1 indicates an error. WARNINGS
The name of the makefile is included as a macro definition within the makefile and must be changed if the makefile is renamed. Since executable files are dependent on libraries, standard library abbreviations must be expanded to full path names within the macro def- inition in the makefile. Generated dependency information appears after a line in the makefile beginning with This line must not be removed, nor must any other information be inserted in the makefile below this line. The name of a program or library must not conflict with any predefined target names in a makefile. It is especially important to avoid the the name to prevent from recursively executing itself an infinite number of times. AUTHOR
was developed by the University of California, Berkeley. FILES
Standard program makefile template Standard library makefile template User-defined program makefile template User-defined library makefile template SEE ALSO
ar(1), ctags(1), ld(1), make(1). "Automatic Generation of Make Dependencies", Walden, K., vol. 14, no. 6, pp. 575-585, June 1984. mkmf(1)
All times are GMT -4. The time now is 08:52 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy