• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 09:14
CEST 15:14
KST 22:14
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL20] Finals Preview: Arrival2TL.net Map Contest #21: Voting10[ASL20] Ro4 Preview: Descent11Team TLMC #5: Winners Announced!3[ASL20] Ro8 Preview Pt2: Holding On9
Community News
Chinese SC2 server to reopen; live all-star event in Hangzhou21Weekly Cups (Oct 13-19): Clem Goes for Four3BSL Team A vs Koreans - Sat-Sun 16:00 CET9Weekly Cups (Oct 6-12): Four star herO85.0.15 Patch Balance Hotfix (2025-10-8)81
StarCraft 2
General
RotterdaM "Serral is the GOAT, and it's not close" Chinese SC2 server to reopen; live all-star event in Hangzhou The New Patch Killed Mech! Weekly Cups (Oct 13-19): Clem Goes for Four 5.0.15 Patch Balance Hotfix (2025-10-8)
Tourneys
Merivale 8 Open - LAN - Stellar Fest Tenacious Turtle Tussle RSL Season 3 Qualifier Links and Dates $1,200 WardiTV October (Oct 21st-31st) SC2's Safe House 2 - October 18 & 19
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 496 Endless Infection Mutation # 495 Rest In Peace Mutation # 494 Unstable Environment Mutation # 493 Quick Killers
Brood War
General
[ASL20] Finals Preview: Arrival BSL Team A vs Koreans - Sat-Sun 16:00 CET OGN to release AI-upscaled StarLeague from Feb 24 Is there anyway to get a private coach? BW General Discussion
Tourneys
[ASL20] Grand Finals ASL final tickets help Small VOD Thread 2.0 [Megathread] Daily Proleagues
Strategy
Roaring Currents ASL final Relatively freeroll strategies BW - ajfirecracker Strategy & Training TvP Upgrades
Other Games
General Games
Path of Exile Nintendo Switch Thread Stormgate/Frost Giant Megathread Dawn of War IV ZeroSpace Megathread
Dota 2
Official 'what is Dota anymore' discussion LiquidDota to reintegrate into TL.net
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread SPIRED by.ASL Mafia {211640}
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread Things Aren’t Peaceful in Palestine YouTube Thread The Chess Thread
Fan Clubs
White-Ra Fan Club The herO Fan Club!
Media & Entertainment
Anime Discussion Thread [Manga] One Piece Korean Music Discussion Series you have seen recently... Movie Discussion!
Sports
MLB/Baseball 2023 2024 - 2026 Football Thread TeamLiquid Health and Fitness Initiative For 2023 Formula 1 Discussion NBA General Discussion
World Cup 2022
Tech Support
SC2 Client Relocalization [Change SC2 Language] Linksys AE2500 USB WIFI keeps disconnecting Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List Recent Gifted Posts
Blogs
The Benefits Of Limited Comm…
TrAiDoS
Sabrina was soooo lame on S…
Peanutsc
Our Last Hope in th…
KrillinFromwales
Certified Crazy
Hildegard
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1831 users

Computer Programming, compiling a shared library

Blogs > Zortch
Post a Reply
Zortch
Profile Blog Joined January 2008
Canada635 Posts
May 15 2008 15:59 GMT
#1
Hey, so I'm a math student working on a computer program.
I've got to call some C methods from my java code so I'm working on learning some basic JNI(java native interface).

I am working on Fedora.
I'm putting together the very simple HelloWorld program for starters.
I'm following along exactly with the book.
Java code is written fine, C code is written fine.
Now I need to compile HelloWorld.c into libHelloWorld.so but the book only gives commands to do this for Solaris and Win32. I tried the Solaris command but it didn't work.
The command given is:
cc -G -I/java/include -I/java/include/solaris HelloWorld.c -o libHelloWorld.so

The message I get is:
cc: unrecognized option '-G'
HelloWorld.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
HelloWorld.c:8: error: stray ‘\’ in program
HelloWorld.c:8: error: missing terminating " character

If anyone has any idea of the proper command or what I'm doing wrong I'd appreaciate it, Thanks!


*****
Respect is everything. ~ARchon
haduken
Profile Blog Joined April 2003
Australia8267 Posts
May 15 2008 16:05 GMT
#2
type: man cc
and look up for an option that does what you want.

dunno really...
going to sleep now, but just by looking at your problem for a few secs, it appears you are trying to
access something on solaris (a sun OS which has good java support) on fedora, a typical linux machine.

try dig around sun forum and see if they have something that you can install.
Rillanon.au
haduken
Profile Blog Joined April 2003
Australia8267 Posts
May 15 2008 16:22 GMT
#3
google says that JNI has platform dependencies....
have a look at this page
http://depth-first.com/articles/2006/10/16/compiling-c-to-java-bytecode

i'm guessing you have to change the -I/java/include -I/java/include/solaris into whatever java you got on your fedora...
Rillanon.au
zdd
Profile Blog Joined October 2004
1463 Posts
May 15 2008 16:30 GMT
#4
looks like your cc binary wasn't compiled with the proper flags. did you compile it from source or are you using a pre-built package?
All you need in life is a strong will to succeed and unrelenting determination. If you meet these prerequisites, you can become anything you want with absolutely no luck, fortune or natural ability.
Zortch
Profile Blog Joined January 2008
Canada635 Posts
May 15 2008 16:36 GMT
#5
zdd:
Ok well I don't really understand what you just said, but I assume you're talking about my fedora setup? I didn't set up anything on this computer if that is what you are asking.
Sorry for my lack of knowledge heh, I'm not really a comp sci student.

haduken:
Thanks for the advice, I'll look into it ^^
Respect is everything. ~ARchon
zdd
Profile Blog Joined October 2004
1463 Posts
Last Edited: 2008-05-15 16:45:16
May 15 2008 16:44 GMT
#6
On May 16 2008 01:36 Zortch wrote:
zdd:
Ok well I don't really understand what you just said, but I assume you're talking about my fedora setup? I didn't set up anything on this computer if that is what you are asking.
Sorry for my lack of knowledge heh, I'm not really a comp sci student.

haduken:
Thanks for the advice, I'll look into it ^^

generally "unrecognized option" in the output means that the program does not support the function you are trying to make it perform, because someone explicitly specified it at compile time by not setting a "flag" to the compiler that made your "cc" program, or the function has a different parameter than the one you are used to. so the -G is not supported by your cc, and since you are probably using the pre-built fedora cc package, I would recommend rebuilding cc from the source code with the flag for whatever feature "-G" is enabled, or finding out if the feature has to be called with a different parameter other than -G.
All you need in life is a strong will to succeed and unrelenting determination. If you meet these prerequisites, you can become anything you want with absolutely no luck, fortune or natural ability.
CTStalker
Profile Blog Joined November 2004
Canada9720 Posts
May 15 2008 16:46 GMT
#7
some very smart people i've worked with have told me that JNI is one the hardest APIs around to learn, so goodluck. I've only got minimal experience with it, so I'm not any help. sorry
By the way, my name is Funk. I am not of your world
omgbnetsux
Profile Blog Joined April 2004
United States3749 Posts
May 15 2008 16:49 GMT
#8
On May 16 2008 01:46 CTStalker wrote:
some very smart people i've worked with have told me that JNI is one the hardest APIs around to learn, so goodluck. I've only got minimal experience with it, so I'm not any help. sorry

JNI is nasty indeed. I won't even touch it.

Godspeed. Google, google, google.
FreeZEternal
Profile Joined January 2003
Korea (South)3396 Posts
May 15 2008 16:50 GMT
#9
Yeap it's very hard because you make a mistake in your C code and you will get huge native stack trace that will kill your JVM.
Zortch
Profile Blog Joined January 2008
Canada635 Posts
May 15 2008 16:50 GMT
#10
Heh, thanks guys.
The worst part is, JNI isn't even the problem...yet xD
Respect is everything. ~ARchon
borg
Profile Joined September 2005
171 Posts
May 15 2008 20:36 GMT
#11
hi there, lemme try to shed some light on this.

first of all, unix (solaris) isnt linux (fedora). you can easily tell from the man pages for any unix command and their linux counterpart. that's not to say they are completely different, sometimes the differences are very subtle, even undocumented...

that said, ill copy/paste the man pages for solaris 5.9 (which i have) for the cc command
+ Show Spoiler +

SunOS/BSD Compatibility Package Commands cc(1B)

NAME
cc - C compiler

SYNOPSIS
/usr/ucb/cc [options]

DESCRIPTION
/usr/ucb/cc is the interface to the BSD Compatibility Pack-
age C compiler. It is a script that looks for the link
/usr/ccs/bin/ucbcc to the C compiler. The /usr/ccs/bin/ucbcc
link is available only with the SPROcc package, whose
default location is /opt/SUNWspro. The /usr/ucb/cc interface
is identical to /usr/ccs/bin/ucbcc, except that BSD headers
are used and BSD libraries are linked before base
libraries. The /opt/SUNWspro/man/man1/acc.1 man page is
available only with the SPROcc package.

OPTIONS
The /usr/ucb/cc interface accepts the same options as
/usr/ccs/bin/ucbcc, with the following exceptions:

-Idir Search dir for included files whose names do not begin
with a slash (/) prior to searching the usual direc-
tories. The directories for multiple -I options are
searched in the order specified. The preprocessor
first searches for #include files in the directory
containing sourcefile, and then in directories named
with -I options (if any), then /usr/ucbinclude, and
finally, in /usr/include.

-Ldir Add dir to the list of directories searched for
libraries by /usr/ccs/bin/ucbcc. This option is passed
to /usr/ccs/bin/ld and /usr/lib. Directories specified
with this option are searched before /usr/ucblib and
/usr/lib.

-Y P, dir
Change the default directory used for finding
libraries.

EXIT STATUS
The following exit values are returned:

0 Successful compilation or link edit.

>0 An error occurred.

FILES
/usr/ccs/bin/ld
link editor

/usr/lib/libc

SunOS 5.9 Last change: 24 Feb 1998 1

SunOS/BSD Compatibility Package Commands cc(1B)

C library

/usr/ucbinclude
BSD Compatibility directory for header files

/usr/ucblib
BSD Compatibility directory for libraries

/usr/ucblib/libucb
BSD Compatibility C library

/usr/lib/libsocket
library containing socket routines

/usr/lib/libnsl
library containing network functions

/usr/lib/libelf
library containing routines to process ELF object
files

/usr/lib/libaio
library containing asynchronous I/O routines

ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:

____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWscpu |
|_____________________________|_____________________________|

SEE ALSO
ld(1), a.out(4), attributes(5)

NOTES
The -Y P, dir option may have unexpected results and should
not be used.

SunOS 5.9 Last change: 24 Feb 1998 2

>





and here's the man page for cc from my linux OS (ubuntu):
(incidentally, cc is linked to gcc)

+ Show Spoiler +

GCC(1) GNU GCC(1)



NAME
gcc - GNU project C and C++ compiler

SYNOPSIS
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-pedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] [@file] infile...

Only the most useful options are listed here; see below for the remain‐
der. g++ accepts mostly the same options as gcc.

DESCRIPTION
When you invoke GCC, it normally does preprocessing, compilation,
assembly and linking. The "overall options" allow you to stop this
process at an intermediate stage. For example, the -c option says not
to run the linker. Then the output consists of object files output by
the assembler.

Other options are passed on to one stage of processing. Some options
control the preprocessor and others the compiler itself. Yet other
options control the assembler and linker; most of these are not docu‐
mented here, since you rarely need to use any of them.

Most of the command line options that you can use with GCC are useful
for C programs; when an option is only useful with another language
(usually C++), the explanation says so explicitly. If the description
for a particular option does not mention a source language, you can use
that option with all supported languages.

The gcc program accepts options and file names as operands. Many
options have multi-letter names; therefore multiple single-letter
options may not be grouped: -dr is very different from -d -r.

You can mix options and other arguments. For the most part, the order
you use doesn’t matter. Order does matter when you use several options
of the same kind; for example, if you specify -L more than once, the
directories are searched in the order specified.

Many options have long names starting with -f or with -W---for example,
-fmove-loop-invariants, -Wformat and so on. Most of these have both
positive and negative forms; the negative form of -ffoo would be
-fno-foo. This manual documents only one of these two forms, whichever
one is not the default.

OPTIONS
Option Summary

Here is a summary of all the options, grouped by type. Explanations
are in the following sections.

Overall Options
-c -S -E -o file -combine -pipe -pass-exit-codes -x language
-v -### --help --target-help --version @file

C Language Options
-ansi -std=standard -fgnu89-inline -aux-info filename -fno-asm
-fno-builtin -fno-builtin-function -fhosted -ffreestanding
-fopenmp -fms-extensions -trigraphs -no-integrated-cpp
-traditional -traditional-cpp -fallow-single-precision
-fcond-mismatch -fsigned-bitfields -fsigned-char -funsigned-bit��‐
fields -funsigned-char

C++ Language Options
-fabi-version=n -fno-access-control -fcheck-new -fconserve-space
-ffriend-injection -fno-elide-constructors -fno-enforce-eh-specs
-ffor-scope -fno-for-scope -fno-gnu-keywords -fno-implicit-tem��‐
plates -fno-implicit-inline-templates -fno-implement-inlines
-fms-extensions -fno-nonansi-builtins -fno-operator-names
-fno-optional-diags -fpermissive -frepo -fno-rtti -fstats
-ftemplate-depth-n -fno-threadsafe-statics -fuse-cxa-atexit
-fno-weak -nostdinc++ -fno-default-inline -fvisibil��‐
ity-inlines-hidden -Wabi -Wctor-dtor-privacy -Wnon-virtual-dtor
-Wreorder -Weffc++ -Wno-deprecated -Wstrict-null-sentinel
-Wno-non-template-friend -Wold-style-cast -Woverloaded-virtual
-Wno-pmf-conversions -Wsign-promo

Objective-C and Objective-C++ Language Options
-fconstant-string-class=class-name -fgnu-runtime -fnext-runtime
-fno-nil-receivers -fobjc-call-cxx-cdtors -fobjc-direct-dispatch
-fobjc-exceptions -fobjc-gc -freplace-objc-classes -fzero-link
-gen-decls -Wassign-intercept -Wno-protocol -Wselector
-Wstrict-selector-match -Wundeclared-selector

Language Independent Options
-fmessage-length=n -fdiagnostics-show-location=[once|every-line]
-fdiagnostics-show-option

Warning Options
-fsyntax-only -pedantic -pedantic-errors -w -Wextra -Wall
-Waddress -Waggregate-return -Wno-attributes -Wc++-compat
-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wconver��‐
sion -Wno-deprecated-declarations -Wdisabled-optimization
-Wno-div-by-zero -Wno-endif-labels -Werror -Werror=* -Wer��‐
ror-implicit-function-declaration -Wfatal-errors -Wfloat-equal
-Wformat -Wformat=2 -Wno-format-extra-args -Wformat-nonliteral
-Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-func��‐
....


there's actually like 20 more pages of detailed info, but you can see that already there are huge differences btwn the two commands.

since all you're doing is just a hello world program to learn the basics, the best way would be to get a different book that is gives you examples specifically for the OS you're using, that way you dont have to tackle these problems and can just get on with learning the programming language.

i'm guessing your book is this:
http://java.sun.com/docs/books/jni/html/start.html

and according to the book,
The -G option instructs the C compiler to generate a shared library instead of a regular Solaris executable file.

when i look for the "shared library" keyword in the manpage for my linux OS, i see that there are some flags that probably do the same thing, look for -shared, -shared-libgcc, -static-libgcc

you can do a man on your own cc, and look for this "shared library" keyword and work out the corresponding flag that you need.
borg
Profile Joined September 2005
171 Posts
Last Edited: 2008-05-15 20:46:37
May 15 2008 20:39 GMT
#12
one other solution that might also help you is that if you're deadset in using solaris, you can run it as a virtual environment under fedora or any other OS.

here's the vmware version of it for solaris 10.

http://www.vmware.com/appliances/directory/420

you should know that this requires installing the vmware (player) software on fedora (shouldnt be that hard) first and then running the vmware image for solaris 10.

vmware and the solaris image are both free.
Please log in or register to reply.
Live Events Refresh
WardiTV Invitational
11:00
Group B
WardiTV911
TKL 273
IndyStarCraft 215
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Crank 847
TKL 273
IndyStarCraft 215
Rex 119
MindelVK 21
StarCraft: Brood War
Britney 64468
Sea 6804
GuemChi 1824
Leta 642
Stork 281
Last 212
Hyun 153
ggaemo 75
Backho 58
JYJ54
[ Show more ]
JulyZerg 34
Aegong 33
ToSsGirL 32
zelot 25
scan(afreeca) 19
Noble 17
SilentControl 11
Dota 2
Gorgc6376
KheZu535
Fuzer 168
canceldota150
Super Smash Bros
Mew2King83
Heroes of the Storm
Khaldor279
Other Games
singsing2265
B2W.Neo601
XcaliburYe578
Lowko303
KnowMe280
Happy257
Sick248
Trikslyr26
Organizations
StarCraft 2
CranKy Ducklings207
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 13 non-featured ]
StarCraft 2
• Gemini_19 70
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• WagamamaTV640
• Ler61
Upcoming Events
OSC
1h 46m
SKillous vs goblin
Spirit vs GgMaChine
ByuN vs MaxPax
Afreeca Starleague
18h 46m
Snow vs Soma
Sparkling Tuna Cup
20h 46m
WardiTV Invitational
22h 46m
CrankTV Team League
23h 46m
BASILISK vs Streamerzone
Team Liquid vs Shopify Rebellion
Team Vitality vs Team Falcon
BSL Team A[vengers]
1d 1h
Gypsy vs nOOB
JDConan vs Scan
RSL Revival
1d 3h
Wardi Open
1d 22h
CrankTV Team League
1d 23h
Replay Cast
2 days
[ Show More ]
WardiTV Invitational
2 days
CrankTV Team League
2 days
Replay Cast
3 days
CrankTV Team League
3 days
Replay Cast
4 days
The PondCast
4 days
CrankTV Team League
4 days
Replay Cast
5 days
WardiTV Invitational
5 days
CrankTV Team League
5 days
Replay Cast
6 days
Liquipedia Results

Completed

Acropolis #4 - TS2
WardiTV TLMC #15
HCC Europe

Ongoing

BSL 21 Points
ASL Season 20
CSL 2025 AUTUMN (S18)
C-Race Season 1
IPSL Winter 2025-26
KCM Race Survival 2025 Season 4
EC S1
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
BLAST Open Fall Qual
Esports World Cup 2025
BLAST Bounty Fall 2025

Upcoming

SC4ALL: Brood War
BSL Season 21
BSL 21 Team A
BSL 21 Non-Korean Championship
RSL Offline Finals
RSL Revival: Season 3
Stellar Fest
SC4ALL: StarCraft II
CranK Gathers Season 2: SC II Pro Teams
eXTREMESLAND 2025
ESL Impact League Season 8
SL Budapest Major 2025
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.