Skip to content →

Month: December 2008

Undefined symbols: _SCNetworkReachabilityCreateWithName

I was recently adding some code to check for the availability of the network, so I can display an error to the user if unavailable.

I looked at the SeismicXML application and borrowed the following code:


// Use the SystemConfiguration framework to determine if the host that provides
// the RSS feed is available.
– (BOOL)isDataSourceAvailable
{
static BOOL checkNetwork = YES;
if (checkNetwork) {
// Since checking the reachability of a host can be expensive,
// cache the result and perform the reachability check once.
checkNetwork = NO;

Boolean success;
const char *host_name = “earthquake.usgs.gov”;
//const char *host_name = “localhost”;

SCNetworkReachabilityRef reachability =
SCNetworkReachabilityCreateWithName(NULL, host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
_isDataSourceAvailable = success &&
(flags & kSCNetworkFlagsReachable) &&
!(flags & kSCNetworkFlagsConnectionRequired);
CFRelease(reachability);
}
return _isDataSourceAvailable;
}

I wouldn’t compile unless I added the following import:

#import

After adding this I still go 2 more errors, but these were a bit more cryptic.

 Undefined symbols:
"_SCNetworkReachabilityCreateWithName", referenced from:
-[TheElementsAppDelegate isDataSourceAvailable] in TheElementsAppDelegate.o
"_SCNetworkReachabilityGetFlags", referenced from:
-[TheElementsAppDelegate isDataSourceAvailable] in TheElementsAppDelegate.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

After some digging around I realized that I was missing the SystemConfiguration.framework framework.

So here is what I did to add it.
1. I right click on “Frameworks” and choose: Add < Existing Framework
add_framework

2. Browsed to the file: /System/Library/Frameworks/SystemConfiguration.framework

3. Rebuilt the project and my error was gone.

Comments closed

Install SUN JDK on Fedora 10

Installing the SUN JDK on Fedora is pretty simple. Here are some steps you can follow:

1. Go to: http://java.sun.com/javase/downloads/index.jsp

2. Click the download button next to: “Java SE Development Kit (JDK) 6 Update 11” or which ever version you want.

3. On the next page, select Platform: “Linux” and Language: “Multi-language”.  Click on Continue.

4. Then click on the file to download: jdk-6u11-linux-i586.bin  This will download the file to your computer.

5.  Next we need to make the file executable:
     chmod a+x jdk-6u11-linux-i586.bin

6. Then run the installer:
     ./ jdk-6u11-linux-i586.bin

You’ll need to read the Terms & Conditions and accept them.

At this point you can use it as it or set it up more.  Here is what I did.

7.  As root I moved it to /usr/local
     sudo mv  jdk1.6.0_11 /usr/local

8. Then I updated my .bashrc to add it to my path:
     vi ~/.bashrc

Add the following:
export JAVA_HOME=/usr/local/jdk1.6.0_11
export PATH=$PATH:$JAVA_HOME/bin

9.  Now to use java either source the .bashrc like:
     source ~/.bashrc

Or open a new terminal window.

Note 1: Note, these steps should work on most linux distros.

Note 2: If you already have OpenJDK installed, you can remove it with:
     # yum remove java-1.6.0-openjdk java-1.6.0-openjdk-plugin

Note 3: If you are missing some dependancies, you can add them like:
     # yum install compat-libstdc++-33 compat-libstdc++-296

Adding javac to your Path
To make javac available to any individual user, just add the following to each user’s path:

export JAVA_HOME=/usr/local/jdk1.6.0_11
export PATH=$PATH:$JAVA_HOME/bin

For example, if you have a user called doug, you’d open:
/home/doug/.bashrc

And add the 2 export command. (This assume you are using bash and the /home/doug is your home directory)

If you want to make is available to all users, as root edit the file:
/etc/profile

And again add:
export JAVA_HOME=/usr/local/jdk1.6.0_11
export PATH=$PATH:$JAVA_HOME/bin

If your shell is tcsh, you can add it here:
/etc/csh.cshrc

Firefox Plugin
You need to manuallly install the plugin. I followed the instructions in this thread: http://www.e-graviton.com/ird/node/195

On my Linux box, the plugins directory does not exist. So I have to create a new one first. Here are the steps:

1. Make a symbolic link:
$ mkdir plugins
$ pwd
/home/doug/.mozilla/plugins
$ ln -s /usr/local/jdk1.6.0_11/jre/plugin/i386/ns7/libjavaplugin_oji.so ./libjavaplugin_oji.so
$ ls
libjavaplugin_oji.so
$

2. Then I added the following lines to my .bash_profile
MOZ_PLUGIN_PATH=$HOME/.mozilla/plugins
export MOZ_PLUGIN_PATH

3. Log off and log on again, start the firefox, and I can run the java applet on linux!

Comments closed