All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nils Köhler" <nk_clean@ibt-interfaces.de>
To: buildroot@busybox.net
Subject: [Buildroot] Question about passing the right TARGET_CC and TARGET_LD to .c and .cpp Makefile in same project
Date: Sat, 02 May 2015 18:18:00 +0200	[thread overview]
Message-ID: <5544F8B8.4080701@ibt-interfaces.de> (raw)

Hello,

I have a problem to compile .c and .cpp sources together in one project.
For .c files everything is fine. but with .cpp i run into problems. It 
compiles witout any error, but will not run on target.
The executeble itselv is present, but linked against host. I can run the 
executeble on the host but not on the target.

I have googeled a lot but actually i found no way to solve the problem.

I monitored two problems to build my .cpp executebles of a project named 
connect:

     1. Problem
         For a multi input file .cpp application the host g++ is used, 
instead of the TARGET_CC, it seems that TARGET_CC is not passed 
correctly into the makefile see below [1. Problem]

     2. Problem
         In case of linking the parts together LD="" Libary path is emty 
see below [2. Problem]

     The pure .c program the project is compiling fine with right lib 
and gcc, it also runs on the target.

[Cmmented part output of a make run]

[1. Problem]
g++  -Wall -Wextra -m32 -g -rdynamic -pedantic -Wshadow -fbounds-check 
-fstack-protector-all  -c -o util.o util.cpp
g++  -Wall -Wextra -m32 -g -rdynamic -pedantic -Wshadow -fbounds-check 
-fstack-protector-all  -c -o tally.o tally.cpp
g++ -Wall -Wextra -m32 -g -rdynamic -pedantic -Wshadow -fbounds-check 
-fstack-protector-all -o tally tally.o util.o

[2. Problem]
#    /usr/bin/make -j2 
CXX"/home/koehler/s/br/buildroot/output/host/usr/bin/i586-buildroot-linux-uclibc-g++" 
LD="" -C /home/koehler/s/br/buildroot/out
put/build/connect-1.0 tally


[Normal .c program in same project compiles fine and run on target too]
#    /usr/bin/make -j2 
CC="/home/koehler/s/br/buildroot/output/host/usr/bin/i586-buildroot-linux-uclibc-gcc" 
LD="/home/koehler/s/br/buildroot/output/h
ost/usr/bin/i586-buildroot-linux-uclibc-ld" -C 
/home/koehler/s/br/buildroot/output/build/connect-1.0 gpi_mon


Does anyone have an idear for me how to solve this issue?

Regards

NIls


----------------------------------------------------------------------------------
Here are the part of the buildroot makefile I use:

connect.mk for CONNECT Package:

define CONNECT_BUILD_CMDS
     $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all
     $(MAKE) -C $(LINUX_DIR) $(LINUX_MAKE_FLAGS) M=$(@D) modules_install
endef

define CONNECT_INSTALL_TARGET_CMDS
     $(INSTALL) -D -m 0755 $(@D)/tally $(TARGET_DIR)/bin/tally
     $(INSTALL) -D -m 0755 $(@D)/gpi_mon $(TARGET_DIR)/bin/gpi_mon
endef

define CONNECT_DEVICES
     /dev/debug  c  666  0  0  42  0  -  -  -
endef

$(eval $(generic-package))

------------------------------------------------------------------------------------

And the Makefile for my sourcecode:
# source makefile
ccflags-y+=-DUSE_PLATFORM_DEVICE
ccflags-y+=-Wall -rdynamic -Wshadow -fbounds-check

# Executebles and objects
EXEC = gpi_mon tally
OBJS = tally.o util.o

#dependencies CPP program
tally: tally.o util.o
tally.o: defines.h tally.h tally.cpp
util.o: defines.h tally.h util.cpp

#dependencies C program
gpi_mon.o: defines.h gpi_mon.c

KERNELDIR ?= 
/home/koehler/s/br/buildroot/output/build/linux-$(BR2_LINUX_KERNEL_VERSION)


all: modules program

modules:
     $(MAKE) -C $(KERNELDIR) M=$$PWD modules

modules_install:
     $(MAKE) -C $(KERNELDIR) M=$$PWD modules_install

program: $(EXEC)
     $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

clean:
     rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions 
modules.order Module.symvers dio *.tmp tally gpi_mon

----------------------------------------------------------------------------------------------------
I use buildroot actual git rep last pull:
koehler at koehler-laptop-ubuntu-final:~/s/br/buildroot$ git log
commit 94856075660dab56249fbe3452b34e489c2a79c5
Author: Peter Korsgaard <peter@korsgaard.com>
Date:   Mon Apr 27 00:10:53 2015 +0200

Linux Kernel 3.18.12



-- 
-------------------------------------------------

IBT Interfaces
inh. Nils K?hler
Im Taubhaus 19
63322 R?dermark

Tel. +49-6074-6964-160
Tel. +49-6074-6964-161
Email: nils.koehler at ibt-interfaces.de

Ust-IdNr:DE813155747

             reply	other threads:[~2015-05-02 16:18 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-02 16:18 Nils Köhler [this message]
2015-05-02 19:18 ` [Buildroot] Question about passing the right TARGET_CC and TARGET_LD to .c and .cpp Makefile in same project Arnout Vandecappelle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5544F8B8.4080701@ibt-interfaces.de \
    --to=nk_clean@ibt-interfaces.de \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.