Hi Gregor,

Got your point.Thank you for your response.
That explains why the binaries have different names post compilation.

Thanks,
Nitish


On Wed, Mar 18, 2020 at 7:06 PM Gregor Best <b...@pferdewetten.de> wrote:

> Hi,
>
> In both `go build main.go`-examples, you tell the compiler to _only_ build
> `main.go`.
>
> In your first example, `main.go` probably imports both `util` and `lib`
> (you might want to give them less generic names by the way). The go
> compiler thus knows "to build `main.go`, I need to build both `util` and
> `lib` and link them in".
>
> In the second example, it has no way of knowing where `load_pattern_db`
> comes from, since you didn't tell it to compile a file that defines that
> function.
>
> The examples where you omit the `main.go` tell the compiler "build the
> package in this directory", which includes all `.go`-files in the
> directory. `node.c` and `node.h` are likely built because of `cgo`
> directives in `a.go`.
>
> The compiler and linker did exactly as you told them to.
> On 18.03.20 14:17, Nitish Saboo wrote:
>
> Hi,
>
>
>
> *Case 1 ---------- *
> I have a project called 'nitish' where the folder structure looks like the
> following:
>
> nitish
>        main.go
>        util
>             util.go
>        lib
>             node.c
>             node.h
>             a.go
>
> When I try compiling this project in the following ways:
>
> 1) go build -v - x
>
> >> This creates a binary called 'nitish'
>
> 2)  go build -v - x main.go
>
> >>  This creates a binary called 'main'
>
> ldd output of both the binaries is the same.
>
>
>
> *Case 2 ----------*
>
> Now, when I restructure the project 'nitish' in the following manner:
>
> nitish
>        main.go
>        util.go
>        node.c
>        node.h
>        a.go
>
> When I try compiling this project in the following ways:
>
> 1) go build -v - x
>
> >> This creates a binary called 'nitish'
>
> 2) go build -v - x main.go
>
> >> This error out with the following:
>
> /tmp/go-build074530518/b001/_x002.o: In function
> `_cgo_8eab385aa676_Cfunc_load_pattern_db':
> /tmp/go-build/cgo-gcc-prolog:86: undefined reference to `load_pattern_db'
> collect2: error: ld returned 1 exit status
>
>
> 1) In Case 1, why the binaries are created with different names though
> both the binaries have the same 'ldd output' and work the same manner?
>
> 2) Why we see an error with the command 'go build -v - x main.go' in Case
> 2 but not in Case 1?
>
> Thanks,
> Nitish
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/CALjMrq6gpXPbED%2BK2xiOKYvRg08FZwkjoPSUaGg%3DFu5hKP-%2BKQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/golang-nuts/CALjMrq6gpXPbED%2BK2xiOKYvRg08FZwkjoPSUaGg%3DFu5hKP-%2BKQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> --
> --
>   Gregor Best
>   b...@pferdewetten.de
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/d23423e6-f204-8e63-436b-aa3730013392%40pferdewetten.de
> <https://groups.google.com/d/msgid/golang-nuts/d23423e6-f204-8e63-436b-aa3730013392%40pferdewetten.de?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CALjMrq53prk0xxkp%2BXoa1SqG8BpkFnYaN%3DBWdEcStL%2BgREvAFg%40mail.gmail.com.

Reply via email to